{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:20:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"97dba0c9-7210-42c2-bcc2-80368bd3e597","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:25:00","totalConnections":1}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"53d1b5db-046f-4fc2-8fc4-b2280dcce2ed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 04:30:00"}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"58a81766-3f18-4167-bfae-e980353c3e8b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:35:00","totalConnections":1}
{"durationMs":2.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c19e4899-e375-4130-b3d5-a01def8df33d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:40:00","totalConnections":1}
{"durationMs":3.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f2b3463d-8265-4776-9319-48d5d0f71ac5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:45:00","totalConnections":1}
{"durationMs":2.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"70e5b1e1-1c9f-43ac-a589-778658c7005d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:45:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:50:00","totalConnections":1}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"34044d7a-a454-4608-b746-b78f3bf20297","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 04:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 04:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 04:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 04:55:00","totalConnections":1}
{"durationMs":2.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"37460cfa-d9af-4f39-98f4-73c7f080da60","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 04:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 04:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 04:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 04:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 04:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 04:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 04:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 04:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 04:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 05:00:00"}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43194edf-3a85-4dbc-a942-2b726530ea5c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:05:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e725788d-917a-4792-a941-155c00d89fa7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:10:00","totalConnections":1}
{"durationMs":2.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cc3b823a-91c2-42bd-b375-92803b0b8c88","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:15:00","totalConnections":1}
{"durationMs":2.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4014f460-e35c-49de-ab4f-d93a7f5448e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:15:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:20:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"424cf664-bdf1-4dff-88ad-322cabf663bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:25:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b4b114e9-3918-4e00-b950-503ce93acae3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 05:30:00"}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"609d98f4-34e4-4197-bac3-f52dee4b6647","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:35:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"04032b81-783a-49e2-b094-02e0655e239f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:40:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7ba7444f-673a-4bda-b8e3-c1c050059fed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:41:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:45:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"237ecb3d-b748-4bde-8431-222b967b21e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:45:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:50:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9d93ce79-fe96-4232-858d-c2c26275dac7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 05:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 05:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 05:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 05:55:00","totalConnections":1}
{"durationMs":3.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"643af14b-0c36-45b8-8eb4-a827b51105db","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 05:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 05:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 05:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 05:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 05:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 05:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 05:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 05:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 05:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 06:00:00"}
{"durationMs":3.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0e5f4443-1052-4bba-a64f-e109b6f9b665","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:05:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0fc2ae28-0d4c-4c44-a664-e911329f2bbf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:10:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5c17e2c9-c4a8-4468-b7f6-43d041fe7165","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:15:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"76d31e7a-fb40-4f76-82d7-891633b8f13e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:20:00","totalConnections":1}
{"durationMs":2.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"65832044-011f-4be2-b360-42ef5b31c74c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:25:00","totalConnections":1}
{"durationMs":2.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc4a0c14-d37e-4067-b1c3-c7785b708624","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:25:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 06:30:00"}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5a0162c7-234a-4269-ab7a-0c54a9f3f6b7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:35:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7dee9df1-9759-45a0-8e7c-357446391fb0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:40:00","totalConnections":1}
{"durationMs":3.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fde0340-7e24-46ae-857e-af8431dbe8a3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:45:00","totalConnections":1}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"33691b98-5365-49ef-a09b-0f074c7a30ec","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:50:00","totalConnections":1}
{"durationMs":2.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ddfc8a93-0359-4a5e-a2a8-ce9ae851af63","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 06:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 06:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 06:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 06:55:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"610f838e-4154-4462-b1d5-dcbdf497293a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 06:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 06:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 06:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 06:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 06:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 06:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 06:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 06:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 06:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:00:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5b673ca5-22f6-4c5c-9d59-56618122739c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:05:00","totalConnections":1}
{"durationMs":2.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8b9139e1-6d22-432b-a938-cb98f5a1b1ae","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:10:00","totalConnections":1}
{"durationMs":1.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2602c5ed-e807-45e0-af82-98298893e02f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:15:00","totalConnections":1}
{"durationMs":2.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19da9ad8-6b5b-41c7-bd34-a6192a408569","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:20:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"51595287-5004-4de3-b9ed-96e938419764","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:25:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f946a03a-7d66-4094-85ae-8c3687372ff7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:30:00","totalConnections":1}
{"durationMs":2.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e51ae0b0-ff1a-489e-9d55-e3be3ad5d538","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:35:00","totalConnections":1}
{"durationMs":2.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"23c81e92-fdc4-4adb-8a9c-b2c4feda00dd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:40:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b1062fa6-70be-433f-b767-935895b38804","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:44:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:45:00","totalConnections":1}
{"durationMs":2.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d918c5b-3cd9-4413-9c45-b86b75cc7b0a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:50:00","totalConnections":1}
{"durationMs":2.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2ab380c3-c189-4022-a972-99e6017b0079","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 07:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 07:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 07:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 07:55:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac703a82-b9bc-4c8d-89c0-38f64bf4cb4b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 07:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 07:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 07:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 07:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 07:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 07:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 07:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 07:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 07:59:25"}
{"level":"info","message":"[CRON] Library overdue check started","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"error","message":"[CRON] Library overdue check failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/library-overdue.job.js:14:56)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:00:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c9ef0294-a35d-4198-a0a5-0dfcd5b48a5c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:05:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0541812e-7b50-4459-a45b-79ad3c2eb98c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:10:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d2244fc2-1026-4b35-a843-8dc4bdd57255","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:15:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e815fa2e-91b2-4631-99cf-84c2bef791b9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:20:00","totalConnections":1}
{"durationMs":3.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"37442056-f2c0-4e6b-ab81-47de8ac22c56","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:25:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4b766ed-0550-4f8d-b9b4-c86818eb95c7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:25:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 08:30:00"}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7297681b-df2a-4cb5-b5b9-a8425fd90785","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:35:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"215d5fcd-3005-4bd8-a289-4984b7ada261","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:40:00","totalConnections":1}
{"durationMs":4.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"700371a8-9898-4869-a9a5-bca6f12b3b04","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:45:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7cc6f3f3-dfb1-4af5-b589-9c7d10dc0d25","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:50:00","totalConnections":1}
{"durationMs":2.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"051dab19-87ff-4182-998f-f7d995649195","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 08:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 08:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 08:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 08:55:00","totalConnections":1}
{"durationMs":2.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"993c0fb5-4b24-4ed0-8340-2a97527f87a2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 08:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:57:25"}
{"data":{"from":"/guardian/profile","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 08:57:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/profile","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 08:57:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cde8e61f-5f0f-4281-a8e1-0d820b98930c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:30","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 08:57:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1003c67d-ee6f-418f-9d50-cdb62e6d9b09","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:44","userId":null}
{"durationMs":674.45,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"64ab1b05-ca08-4e55-8f70-6bdd37fed2f4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:50","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":57,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 08:57:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":4.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"468ee6d5-0d27-42c0-9f68-805bb5073cd4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:53","userId":null}
{"durationMs":27.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"66da739d-52fc-4572-8552-016880974973","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1926.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:57:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f588da32-0f8d-4d70-a6e9-13163c5bdb62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":63.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"8cb9d098-5f57-4aa7-a780-0d9e905527a2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:57:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:58:00"}
{"durationMs":27.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"45f99c66-6ce1-4114-ac3a-35d07cf053eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":25.86,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"60f05e33-8558-4f53-a428-bdf1f1264cc9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"cc0e7305-fc8f-414d-a658-774bc28b6584","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":260.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"ddb42580-de67-436a-b4c0-dba674a49ec5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":18.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"7ba64703-0684-412e-80d9-881306abc51d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"3f5161e8-5ae8-4c65-941e-b94c3c6590d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":19.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"736825a0-bd2e-4f29-a4f9-87153dc02111","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"bb90587d-0e5b-4d8f-9bcd-ef327080b3da","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":6221,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"387cf806-b191-4855-9d79-3906feeade70","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":30.43,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"f3395d7f-8e5e-429d-ba69-5edd4af0208d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":69.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"9cec7c6f-6a44-4050-983b-4e87b013a72d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"92897ece-d884-4d22-890d-068d0ccecce2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":3545.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":5622.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787119079337-716042","text":"Fees"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787119079337-716042","text":"Fees","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":130,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787119079337-716042","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":156,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":6848.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":7197.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":7259.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":7467.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":7673.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":8575.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":8579.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":8907.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":3639.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f12baa50-b0c3-465d-b6b9-728c3c5d1b04","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":799.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"de6be463-fbdc-4dc3-a270-f77105b8de33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,479.00","name":null,"type":null},"durationMs":48,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"65a2238d-8375-4b58-a2f0-51c2835eabc9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":"none","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21479,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-19 08:58:17"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-19 08:58:17"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"63540e98-7978-4923-bc6c-01a3e141cec6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_19082026085816731748405451","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"be100948-f71b-456f-b3f9-9d1f57a870e1","service":"cbc-sms","timestamp":"2026-08-19 08:58:19"}
{"durationMs":1600.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"4a37dffe-a3cd-4c88-8dff-e39c0244459b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2697.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"67b67a39-588d-4f0a-acaa-f2b122a21c46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"fcff055e-c15b-4fde-ac57-64a7c064e6ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":865.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4fbdafc0-9383-4f29-80cd-77d66cf49d98","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":32.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"942e7e28-5e82-40be-8e88-8464ce9c2455","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":719.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0e8bc0b7-9cb9-41d6-a284-e4fc47c37da1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":24.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"457147ec-cf34-4eec-ad75-ce20021c51f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"b9189806-57a9-4316-b05d-6f6b9977bad4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":1333,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b1973906-0182-45f5-98de-834314f488c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":698.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7d35998d-fc16-467f-ad00-f9c77bbac782","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":34.91,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"bb7aa5d4-1e01-4fcd-9b2a-d3f2a9e470b9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 08:58:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":21.54,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"cc52b55f-82b9-4549-b374-f0ae96b79dea","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:31","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":754.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b2a5e5f7-a72a-4ce4-8637-155dc10320f4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451","requestId":"9f2c3ad4-ba38-4f68-a794-3916399dbac3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026085816731748405451"},"durationMs":705.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"32e9ddef-449c-4a9b-b21f-ffea16b0cd60","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 08:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b4585181-3516-41b3-ac12-fbf2e8296a7e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 08:58:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 08:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 08:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 08:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 08:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 08:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 08:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 08:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 08:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 09:00:00"}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1d150849-1bfb-4821-b722-dd90aba720da","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:05:00","totalConnections":1}
{"durationMs":2.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"17b0f863-3574-4460-9409-e90d20e909e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:06:00"}
{"durationMs":53.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b1848684-cc65-461a-b059-9177b4ccc2c4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 09:06:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6db3236f-5af6-4bf9-8dc5-40290282ea84","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 09:06:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1324.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 09:06:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1628.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 09:06:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c964c1b9-ce1f-4770-b965-000cc8973145","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 09:06:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:10:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"78b3da7a-c9eb-4d5a-b3fe-a376a992cf38","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:15:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7889605a-fdf2-4841-8477-d2a8d165419b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:15:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:20:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"931ef62c-f2f4-41a0-989c-3cfe3ea4c94f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:25:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:25:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:25:01","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ecd7c3f-3398-44f7-8e00-f2c18ff38d3b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:25:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:27:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:29:25"}
{"level":"info","message":"[CRON] Attendance alert started","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"error","message":"[CRON] Attendance alert failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/attendance-alert.job.js:19:53)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 1 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 09:30:00"}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bd2d3d6e-0d24-4faa-9acc-0e985adb68f6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:35:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc79da80-b99e-42be-b1f2-33b8f16c7813","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:40:00","totalConnections":1}
{"durationMs":2.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a3a7e7d-e6aa-456b-bf28-50393b19c52a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:43:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:45:00","totalConnections":1}
{"durationMs":2.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"106e62e5-484a-4095-8f08-92f552692738","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:50:00","totalConnections":1}
{"durationMs":1.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f4c98900-ca54-4428-8076-146acc16fd32","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 09:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 09:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 09:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 09:55:00","totalConnections":1}
{"durationMs":2.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"839cca08-bc26-4bf0-8a51-eec6451e8777","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 09:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 09:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 09:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 09:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 09:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 09:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 09:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 09:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 09:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 10:00:00"}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e1b36762-3995-404a-b3df-c241d4ebe084","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:01:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:05:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4097d375-8285-41a7-a9a7-fdb28756ac80","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:10:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5297934-1463-493b-ac9c-d375b2b44d86","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:15:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"307f2d4c-3fa3-4520-ad9a-4881f10c16e8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:18:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue: Too many connections","service":"cbc-sms","stack":"SequelizeConnectionError: Too many connections\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:102:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:18:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:18:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:18:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:05"}
{"level":"error","message":"[Payment Email Catch-Up] Job error:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:15"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:19:50"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:20:00"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:00"}
{"error":"","level":"error","message":"Integration sync cron job failed","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:00"}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6d89e870-d625-49c5-b000-2bc20f38cd5c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:20:02","userId":null}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:05"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:20:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:05"}
{"level":"error","message":"[Payment Email Catch-Up] Job error:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:15"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:21:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:22:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:22:05"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:22:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:22:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:22:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:05"}
{"level":"error","message":"[Payment Email Catch-Up] Job error:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:15"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:23:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:24:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:24:05"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:24:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:24:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:24:50"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:25:00"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:00"}
{"error":"","level":"error","message":"Integration sync cron job failed","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:00"}
{"durationMs":3.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8040bc8f-613c-4ab3-8322-b0a245fa5982","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:25:02","userId":null}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:05"}
{"level":"error","message":"[Payment Email Catch-Up] Job error:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:15"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:25:50"}
{"level":"error","message":"[ScheduledMessages] Error in cron job:","name":"SequelizeConnectionRefusedError","original":{"code":"ECONNREFUSED","fatal":true},"parent":{"code":"ECONNREFUSED","fatal":true},"service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:26:00"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:26:05"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:26:20"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:26:35"}
{"level":"error","message":"[Email Queue Job] Error processing email queue:","service":"cbc-sms","stack":"SequelizeConnectionRefusedError\n    at ConnectionManager.connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:92:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async ConnectionManager._connect (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js:222:24)","timestamp":"2026-08-19 10:26:50"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:27:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:27:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:27:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:27:18"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:27:20"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:27:22"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:27:24"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:27:26"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:29:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 10:30:00"}
{"durationMs":2.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68a8fe35-38b8-4cb5-8c12-8fc663481995","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:31:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:33:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:35:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"74341619-494b-481b-9636-9ec64a8216fb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:35:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:37:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:39:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:40:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:40:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:40:01","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"09e6f8d1-8e35-4d4f-a3a4-f7e3ddac0d25","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:43:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:45:00","totalConnections":1}
{"durationMs":2.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cd2a2eba-fb8f-4455-a565-382728ce3808","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:45:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:47:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:49:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:50:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e963ce54-366c-47ef-9fda-42c9a5c6f6e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:51:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:53:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 10:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 10:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 10:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 10:55:00","totalConnections":1}
{"durationMs":2.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4b4c6fb9-eb43-4a67-ab16-846a4373ef46","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 10:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:55:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:57:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 10:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 10:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 10:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 10:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 10:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 10:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 10:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 10:59:25"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:00:00","totalConnections":1}
{"durationMs":2.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9c2356ce-8d3e-4cea-b9f5-5b5905aac97f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:01:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:03:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:05:00","totalConnections":1}
{"durationMs":2.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3544af0-c3f6-47a4-8bf7-794ae4c11544","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:05:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:07:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:09:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:10:00","totalConnections":1}
{"durationMs":3.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bc88f649-ac82-41bb-8dea-51ff06ff6d4d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:11:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:13:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:15:00","totalConnections":1}
{"durationMs":1.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"33aaa964-c258-4f3f-a956-71c8b539a5ee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:15:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:15:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:17:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:19:25"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:20:00","totalConnections":1}
{"durationMs":2.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60b1719a-ba16-4a07-99b8-3407a5e714f8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:21:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 5 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 5 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:23:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:24:00"}
{"durationMs":3.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c3966e30-f960-418f-a174-689d35504a1e","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 11:24:20","userId":null}
{"durationMs":4.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6acc60f8-f1ef-4e00-addf-c35ec6c1e879","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 11:24:21","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":77,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"29000512-4402-443b-82e8-79330f2c599e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:21","userId":null}
{"durationMs":194.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"f2a11a62-35f2-4ccc-9b0d-f5099704170b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:21","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":2464.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":2832.2,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"27e5b64b-51af-4f6e-ac8c-2839ba68f941","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":232.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a8738ec8-e6c6-4340-99db-3a0f255c7051","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":143.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"8a296eab-df48-45bb-b716-9f6087105c1c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":413.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"c2076080-5041-475d-b9a5-d1ab06ac8ce9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":445.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"07a0b124-f29d-4670-b9a6-5513bec34d37","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"444bd39f-1ba8-4dea-a4d6-e4450f55428e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"4e484dc6-c6f9-4249-b480-5e9fe90d6c08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":23.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"3ee53ab2-b967-43a8-b6f2-a16b19fd2d50","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"5805851d-d7ba-4ed4-9600-6ec1cc1b196a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":964.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1439.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":502.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":505.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":514.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b20f208c-e845-4a1b-9785-fee7eac74a0d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":162.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"3cd1c8e9-b30a-4c40-9214-c8ca5873c27c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"1daf8278-e3d2-4ed9-b6a0-46d19788f933","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":890.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1200.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0e01551b-0192-4117-977e-7687c15c1b1c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":638.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d11df5de-c45a-47d2-8a1b-9880dd1142f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,479.00","name":null,"type":null},"durationMs":49,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"543b727a-b952-40e0-8cfd-b6958612c08b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":"none","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21479,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-19 11:24:41"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-19 11:24:41"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":34,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4fab1e71-5ebb-4b60-99b4-5fd8b4ce71f4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_19082026112440526706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"100277ab-195a-481d-ad85-a598adc37287","service":"cbc-sms","timestamp":"2026-08-19 11:24:43"}
{"durationMs":1767.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"eb4e5a3c-8d80-4ad7-8859-d5824432b2b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2193.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"10dbeffd-fded-4076-b024-3ac82d82c546","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"bb5dc650-48c0-48c3-ad8e-b6fc059d580e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":435,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"96d46341-5a41-48ff-a246-10eaafb7edc3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"613cdf7a-2ca0-4c6b-b48d-9c0468c4db46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:47","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":509.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eafd6a56-c171-45aa-8917-f3385ce3ebc9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:48","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"17f1fd06-f8dc-4b1f-9508-9a7f67fb4cf7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":487,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b12221bc-63ec-4f49-9abc-0d1b1da2da4d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":27.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"e4ba680e-dc4f-4e47-bebe-c5159707a24b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":486.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ea2f1e1c-f1c8-4139-95b1-35b93ce8cdbd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"f417fb1e-3bac-4fed-9a0b-e00de9ab7e34","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:24:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":127.82,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"c8a968db-2ac9-49c0-a222-7feb4e9b4982","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:54","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":463.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d12782c1-c4c2-4b4f-9b74-e33527372b2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238","requestId":"93cd6b5f-cf1a-4881-96eb-1f2e375f6063","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_19082026112440526706576238"},"durationMs":477.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4b053189-0e4b-4d94-9b1d-b2da0f44a6b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":66.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"c6de4374-4b9c-4365-9f50-142b75cd5bf2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":574.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:24:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ceed312c-da2d-4a09-82cd-3d005a01bfa3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:24:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:25:00","totalConnections":1}
{"durationMs":2.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"621353a6-2deb-469d-bb74-750498c72d0d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:25:02","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"49f27644-b273-4fdf-9526-62dedea80079","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:05","userId":null}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8525ced1-4ca3-4160-ad43-4efdff23e460","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:14","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"632f745e-9fa1-4c29-af0d-2efe5bf58528","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:15","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:25:17"}
{"data":{"href":"/forgot-password","navId":"1787127913650-189045","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787127913650-189045","text":"Forgot password?","to":"/forgot-password"},"durationMs":471,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787127913650-189045","to":"/forgot-password"},"durationMs":478,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0b14726c-27f8-4c70-8ffb-34edffe5f033","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:17","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:25:21"}
{"data":{"id":null,"label":"Return to Sign In","name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cb99d0d7-0d4c-4a3e-99a9-c1b0e0627a6e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:21","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:25:25"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71daa56d-b816-4f6f-afea-d721b019a4dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:25","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:25:27"}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:25:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8234aefb-709a-4abf-82c5-fb1b8547b76e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:25:53","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:26:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"08ff1ccb-2e93-478f-bb25-22207d3328b1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:00","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:26:00"}
{"durationMs":793.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"f6a3f3dc-cf8d-4dda-aec2-5eba6ee86c7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:01","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":46,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:26:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"678815f3-1a9c-443b-aa8a-1ef8f37ac797","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:01","userId":null}
{"durationMs":101.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"525c40db-3ad1-454d-925f-6558c344b415","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"25cfeaaa-54e5-4913-99e6-695631238694","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":73.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e644a404-42e2-4e55-95bd-eb13a5776c85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":80.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"5e73d8ce-b2d6-4043-affd-ca1a583a871b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":348.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"95c47b3e-df1b-4c13-9aec-439e15ea9da4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":162.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"4b8976b5-f058-4bf0-ab72-d8a3b4bed660","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":388.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"6d633be3-5296-43eb-90b9-9a634c8b6a50","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"deb3ca5c-bd19-46d6-9176-eff8a777322c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1257.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":704.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b688e4ae-44ea-4720-91b1-3ffac574711a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":190.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"76b3bb70-63c9-401b-a13b-769d5414ab0a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":193.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"b1cee8ec-6f2b-4f89-9d27-861bfc68429c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":230.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"1d087c2d-6cba-4650-93da-da7e1d016faf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":58.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"dab294a2-7dcf-412c-94ab-c81a79299aaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":283.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"6301ea64-a66b-48e9-b136-929792d29072","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":70.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"2ac37acd-3d9e-4041-81b0-53283e1abd5d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":233.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"52bd3900-adf2-43cc-8903-6a5722643fa3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":112.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"9b735824-adcc-48a7-8d2d-f874e0b5cc8c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":586.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"03f9d5f0-7cc3-487d-b7f4-6b41ea972e31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":542.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":935.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":937.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1280.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1283.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1389.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1968.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1691.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1714.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1953.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1955.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1956.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1958.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":2223.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":2225,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":2801.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"946f09c2-9d8f-484b-8746-9f5ea936013c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":93,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"562ec3a9-794f-4a50-b031-b682efe5ec36","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787127969118-842438","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d2098209-c44c-4321-ba6a-ff9ecc27dc54","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":107.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"43905e4d-fd8a-4eb1-8782-7daafa2cffca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"2823234b-c012-46de-ad3d-59ec955916dd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":140.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"2e3ff5aa-b7ee-4e38-b429-76574f9e8355","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":118,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787127969118-842438","text":"Students","to":"/dashboard/students"},"durationMs":2750,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787127969118-842438","to":"/dashboard/students"},"durationMs":2750,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787127969118-842438","to":"/dashboard/students"},"durationMs":2874,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":596.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aa41d3c1-4e6d-46df-8b17-50d9d7f8af35","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":1040.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":1044.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae44815b-4b2e-473b-b2a2-113aa3a960e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":55,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0fa038a9-4fa7-4e73-bd10-9698aa2450f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Cyan","name":null,"type":null},"durationMs":79,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5c3b29dc-862a-4544-ac3c-255c40106e87","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Orange","name":null,"type":null},"durationMs":71,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"03d3ef73-e030-438d-80ec-1b293c14c356","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Add Student","name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"19192de2-514a-45c0-b0b4-9567b5bd5b13","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":54.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/next-admission-number","requestId":"bad41d4f-0fb9-48c4-862e-10dec39bb3c4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":41.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"73a739b8-9b0d-40a8-a03c-e6514f779643","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":36.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"6f1c3494-84f5-4d6d-b617-3cf2042df467","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":null,"navId":null,"text":null,"to":"/dashboard/students/new"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":null,"to":"/dashboard/students/new"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/next-admission-number"},"durationMs":491.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":608.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f985db45-bbf8-4a15-b974-f0dc2ef65710","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":829,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"05e2dfd2-540e-407d-ae0a-eb4a617c9b00","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/next-admission-number","requestId":"49aff89f-0751-4536-9686-280fa82829af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:26:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Autofill Next","name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/next-admission-number"},"durationMs":513.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:26:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"99c3f1d5-1b25-4df7-8e6c-0d59edd26685","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:26:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:27:00"}
{"durationMs":31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"92e1b470-8595-4491-ba60-6730c6f533e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:27:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"12eee791-727a-46f0-b96a-fe7a68fe4332","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 11:27:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":524.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:27:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:27:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":524.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:27:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bd590b7d-d687-46fb-806b-da152bf5e93c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":67,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:27:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b1ab97f1-627c-4c12-b09e-4473025a062c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 11:27:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c49256d-4ea0-48db-9217-aac8b19b56ff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students/new","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard/students/new","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f0ec52b-cb9a-4c3a-9c0a-c8e8d154a27b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:09","userId":null}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6e79c678-94e2-4301-b5a5-cc90608efb75","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:11","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":4.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d455fc35-73f6-4392-b507-308736072336","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:14","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:27:15"}
{"data":{"href":"/forgot-password","navId":"1787128031574-344385","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787128031574-344385","text":"Forgot password?","to":"/forgot-password"},"durationMs":113,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787128031574-344385","to":"/forgot-password"},"durationMs":123,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4f50d323-b505-42aa-9e10-25ad8cdaa5ad","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:15","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:27:17"}
{"data":{"id":null,"label":"Return to Sign In","name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:27:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"02732514-adc2-45e0-b682-ae9d5ed05ba4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:27:18","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 1 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 11:30:00"}
{"durationMs":3.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3a1c18e-9f9f-45d3-a7ce-caac706ce60a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:35:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:35:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:35:01","totalConnections":1}
{"durationMs":3.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fa50a4f5-675c-4390-bc36-96d11f0f9607","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:38:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":142,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 11:38:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e4beed9a-cea1-4fd6-8413-3114b239ece5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 11:38:27","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:39:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:40:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b27cb841-bac4-4f93-a19f-ba581e22729d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:45:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ba526101-7e08-40bb-b765-98f8b9e78bc1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:50:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"20d3598d-c441-4645-b3fd-ea23c47720b3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:54:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 11:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 11:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 11:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 11:55:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"85ebae75-71f6-4b60-a97b-d3b0febaa70d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 11:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 11:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 11:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 11:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 11:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 11:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 11:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 11:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 11:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 11:59:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:00:00","totalConnections":1}
{"durationMs":1.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2ff22f84-34cf-4e41-aae0-6d54bdd45e3e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:05:00","totalConnections":1}
{"durationMs":3.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"de5b2ef5-4d99-47fc-832f-a3a046037c96","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:09:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:10:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c8ca2601-8f8f-4665-864f-3dca9ec79bb2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:13:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:15:00","totalConnections":1}
{"durationMs":2.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2b75c5d6-330b-41e3-a7b6-de8643a33e1e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:15:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:20:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4fe630a5-749b-4b86-8e04-3d6ef36d9174","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:25:00","totalConnections":1}
{"durationMs":3.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3b187830-c68e-4ba4-86a8-de4272722488","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:30:00","totalConnections":1}
{"durationMs":2.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e2f78d4b-0bed-44e4-a34f-ebab446d873e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:35:00","totalConnections":1}
{"durationMs":3.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fd56e74c-0b52-477f-88c4-aea804dc5e19","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:39:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:40:00","totalConnections":1}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6db6ccbd-5a5c-48c6-99be-2c6ac1bc7ff1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:45:00","totalConnections":1}
{"durationMs":1.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ed13927-cbaa-46c9-9b00-b0c0ada9daf9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:45:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:50:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d0068da-219c-4ab7-b25a-a36786d644f5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 12:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 12:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 12:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 12:55:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e9fa06ee-bec2-4f34-81b1-6669d2aac81a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 12:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 12:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 12:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 12:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 12:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 12:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 12:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 12:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 12:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 12:59:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:00:00","totalConnections":1}
{"durationMs":2.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f157cdc1-d435-41f5-a36e-ad6fabe286d3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:05:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3e09109b-f7cd-4aae-a2b3-c4baa946df28","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:09:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:10:00","totalConnections":1}
{"durationMs":2.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b856928-bea8-4058-bb44-3facd697998e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:15:00","totalConnections":1}
{"durationMs":2.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e2faba43-56cf-477e-99d9-11da862388a5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:20:00","totalConnections":1}
{"durationMs":2.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab1883c7-fd4c-44e1-8b53-d057f6444239","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:25:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"23390069-e006-4b5d-8ec4-ac76748feffb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:25:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 13:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:30:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:30:01","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 13:30:01"}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"da61d12b-9f4a-456d-bf02-d5811fde9840","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:35:00","totalConnections":1}
{"durationMs":3.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cf3c4cf7-be61-423c-a25f-c04d14caa61a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:39:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:40:00","totalConnections":1}
{"durationMs":2.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2482e749-ebf2-4d07-b543-72670e2c9710","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:43:00"}
{"durationMs":759.31,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"6135d40c-0b05-4552-80aa-8dd6cc9cd167","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:01","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":35,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 13:43:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.04,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"945d6478-2d23-44cd-a16b-986bb0404827","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:01","userId":null}
{"durationMs":73.65,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"3f090f73-503a-41d5-bb4f-52af1a386958","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":92.27,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"acab2bce-3d06-4906-9782-ec4dc0604a2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":101.72,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"36bafeaa-f2a2-4167-b415-e9e4b1f0bbdd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.42,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"ce848119-8250-4c30-9b7f-7673bbf89ac0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":99.68,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"3a55153c-e0ae-422f-82b7-b47740a2c60c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":164.88,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"6fd9f9e0-4fef-4c79-8e28-b2de42cd2ec6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":117.25,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"4851d398-31c7-4b5b-b991-d4533379b69c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":58.54,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"0087efc6-c4f4-4d4a-9fb0-2361ce7909a6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":57.92,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"0a44846a-9a9c-474f-bc15-85ccb5dd5e5c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1179.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":733.8,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.56,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1af1acb4-b263-4e29-8168-7a699c723b29","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":92.69,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"1f86ba53-e9e1-4c16-81cb-bca482541bb4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":337.3,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"6feb822d-4838-42f2-b8d9-ea6234572e46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 13:43:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1f605659-2474-4cc3-b4dd-8d70a7d7b95f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":null}
{"durationMs":105.54,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"bf8acbe3-bbc8-489b-8bc1-df0e404a0730","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":159.57,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"4ed61f6f-1ece-4c40-936c-5ec1aff83d49","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":67.11,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"b1beb3cd-d8c6-4b44-961d-ea0b8eced618","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":188.46,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"9f3e5957-c1cf-4408-8988-e30f5025acaa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":389.88,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"6e098144-dedd-4f00-8848-b737581dc9a9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":308.36,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"29872ab0-5cb5-4bf9-bfc1-7ba0fb23965b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":812,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":817.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":819.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":879.6,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1012.7,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1043,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1053.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1126.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":695.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.13,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"99b41a36-743a-4b6d-8330-a8678c438790","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":765.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":896.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":897.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":898.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":899.8,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":901,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":902.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.83,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"619e91ee-33e2-411c-bf37-7ce59835ea61","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 13:43:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f5a42df5-0ea7-4d1b-a8d0-93b7f2b95435","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:06","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:43:15"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 13:43:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"35d63962-cf51-4748-8ed7-100342e648d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:17","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:43:17"}
{"durationMs":597.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"5471b89f-d076-47ef-9e51-60825a4a7dc8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:18","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":67,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 13:43:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ddb105c2-86a6-4702-8484-7da9470d0960","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:18","userId":null}
{"durationMs":37.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"2d90dbf7-612e-4207-92d5-97d18f648bfc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"75849c4d-a9f8-459e-847d-429995cd2ff5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:43:19"}
{"durationMs":15.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"04d1314d-8ef0-470f-8a70-2f87658e25f1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":31.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1aa9d6e9-3b95-4b54-9491-9da56dab8b68","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":106.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"fbc4af50-032c-49a6-aac1-72c17d4aaf50","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"d50a9530-5fa0-44ef-8e22-53372efe0eae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"4fd83daa-a4b6-4bda-905d-6b1779bd3cb4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":117.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"585b845b-26d2-412b-8306-9669980a7372","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":125.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"4ac30c78-9aa4-44b5-b259-a94dc7bb63e3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":87.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"7b4efa84-db3c-4abb-8dd8-a88e120a39a8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":56.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"b5f40a9f-2e90-497b-994e-7f1a0febecd3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":156.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"223a849d-b97c-43fc-b725-cdd25282bcb5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":146.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"94fc7106-ace9-453c-9ae3-ad1bf66640b0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":116.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"23c35cde-0289-4275-bc09-e4038d524839","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"9666d303-f82c-4154-b6af-ecf76612e6f7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"28c104be-1df8-4e6c-b860-44e003ba4fd4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"9e70f259-3d66-4a8e-abeb-6b4c232ad618","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1125.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":631.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":495.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":11.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"85cfb526-a3e1-42be-8b23-94c056f96406","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:43:21"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":752.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":833,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":720.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":722,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":963.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1003.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1171.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1230.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1071.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1314.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1315.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1317.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1236.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1311.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1385,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"657f6464-e027-4628-a17f-a0f4eb4b38b1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":29,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d30ee053-e457-426b-be00-587d3e4373bb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:43:27"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":87,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ec94161b-f768-4381-8fca-7cc9953fd35e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":33,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"31e6706d-6981-4422-8e3d-87a6fa15e2e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/assessments/exams","navId":"1787136235678-920401","text":"Exams"},"durationMs":null,"event":"NAV_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:43:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.84,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a9ee7cd2-832b-41b3-ba79-8d83cb625afe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":36.02,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/years","requestId":"8cacaf3b-7e0c-4bbc-a395-74713f4aef31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":85.97,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/subjects","requestId":"d28778d8-38c2-4cf3-a36f-94511139a481","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":123.09,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?page=1&limit=10","requestId":"4614dbbb-6117-4d08-970d-4c5ab9ba09ec","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.22,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"b3877895-ffd8-418f-97cf-b7e6c6cd1bcc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:43:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":41.35,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?page=1&limit=10&termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"06c1c5d1-f6a4-419c-8b58-f9e0e45e0768","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:44:00"}
{"data":{"from":"/dashboard","href":"/dashboard/assessments/exams","navId":"1787136235678-920401","text":"Exams","to":"/dashboard/assessments/exams"},"durationMs":1243,"event":"NAV_PATH_CHANGE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/assessments/exams","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787136235678-920401","to":"/dashboard/assessments/exams"},"durationMs":1243,"event":"NAV_STALL","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/assessments/exams","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787136235678-920401","to":"/dashboard/assessments/exams"},"durationMs":1315,"event":"NAV_RENDER","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/assessments/exams","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/years"},"durationMs":391.6,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/subjects"},"durationMs":503.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":525,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":531.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.11,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"97208b6a-51f6-4404-a1b7-bac22bd803af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":406.1,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.19,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"754413bc-2332-4a37-8aac-887e196e5ddb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.23,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"eb70e2ec-efee-4d67-9dc6-2d4856e70677","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:44:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.9,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"97588974-65a5-42c9-86e9-dd26b221f6fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:44:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":391.1,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":389.7,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.31,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"835abd32-c10e-4534-81a8-41d96742fc2a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.54,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/years","requestId":"55b3bb4e-45e6-436e-a78b-708923ca3bad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":48.66,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"fe12e0c8-0d08-412c-919c-2b2fe645b0d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.98,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"a12ab366-2a0f-4bab-a3c1-925730b07b23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":36.84,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/subjects","requestId":"9e75b618-9608-4485-9c7c-388697bf2d6e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":54.49,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?limit=300","requestId":"7f484d5e-fa7a-4437-b98b-21066dc6ceb0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":140.97,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/teacher-assignments","requestId":"74e49dfc-b391-4496-93a2-7115dcf40f25","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":90.24,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/teacher-assignments?academicYearId=cmp8gtpm300d48bcnc9mas3i7&termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"3219f0f3-87ee-4958-8e78-92e3ab17f236","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.98,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?limit=300&termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"53588879-65d7-4e76-b630-67ee5812ea06","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":6,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/assessments/exams","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/assessments/exams","href":null,"navId":null,"text":null,"to":"/dashboard/academics/cbc-grades"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/academics/cbc-grades","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/assessments/exams","navId":null,"to":"/dashboard/academics/cbc-grades"},"durationMs":null,"event":"NAV_RENDER","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/academics/cbc-grades","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.18,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"33f8e966-a1e8-4e5e-a321-f44ddb3a0889","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":72.43,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/1bc4c141-7909-4356-9f42-2b08fdc4fb8d/results","requestId":"dc1c509a-8494-4281-8729-3cea6992e5ee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/years"},"durationMs":417.1,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":516.7,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":558.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/subjects"},"durationMs":629.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":779,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/teacher-assignments"},"durationMs":810.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/teacher-assignments"},"durationMs":872.6,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":1047.8,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/1bc4c141-7909-4356-9f42-2b08fdc4fb8d/results"},"durationMs":724.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:44:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.17,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3d8591cf-ed52-4de5-8706-c63cfdc2769e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:44:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:45:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"373d414f-dc19-46cd-9a9c-1d9640fa1538","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:45:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:45:27"}
{"durationMs":84.5,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/terms","requestId":"60baf580-a8ad-41de-a970-f69ddfa2214a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.42,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"79b9587a-d84b-4978-b7e6-eefd91df371a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":40.39,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"f2957410-4501-4daf-b4ec-0747a1784059","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.37,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/cbc/learning-areas","requestId":"030d197a-9463-4830-a9fb-4a49889bbef8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":109.07,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/my-streams","requestId":"13a9651d-64d3-4676-937f-10ac2ec78c23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":198.34,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students","requestId":"dacbf9a1-2bf2-48f2-95e2-fd98fe42e534","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r15:-trigger-cbc-grades","label":"CBC Grades","name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/academics/cbc-grades","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":212.44,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f32da365-b672-496d-a5ea-5f12dd3444cc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":253.09,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?termId=cmp8gtpme00d68bcnq5m8mk8x&isPublished=true&limit=100","requestId":"34dea363-9d1e-4c66-b5ef-7a566de474f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":181.24,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/cbc/grades?termId=cmp8gtpme00d68bcnq5m8mk8x&limit=2000","requestId":"1501233a-46ae-4e89-bb5e-89a5e7a96c3a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":247.26,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?limit=5000","requestId":"e61028c6-c3a6-4efe-b8e2-e271ae7f0283","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/terms"},"durationMs":980.1,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":1052.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1208.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/cbc/learning-areas"},"durationMs":1230.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/my-streams"},"durationMs":1276.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":1446.8,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":652.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/cbc/grades"},"durationMs":665,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.99,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f80286c1-03ca-4462-ae46-0a2a57d77010","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":914.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:45:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.49,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"933ff3af-eecb-4b4c-bc01-5073c12c5be1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:45:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:46:00"}
{"durationMs":43.62,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5626ca38-5e48-40b6-a033-be12b83c9182","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:46:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":39.34,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"33248685-0bf9-4f31-b53f-3fde3acd5620","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:46:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":396.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:46:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":414.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:46:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.2,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bda94309-7933-491e-8d49-05c51db34b02","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:46:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:47:27"}
{"durationMs":103.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"84ee2f6c-2a79-4624-8402-8d13292ca62c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:47:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c2e07802-9381-47b4-a97f-7386a4a83375","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:47:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":56.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"f44724f5-79e0-43fb-b453-1206f43c2795","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:47:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1664.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:47:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1677.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:47:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1694.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:47:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d588f8d2-e2fb-434c-b00b-8603578f85aa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:47:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:48:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":110,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"57bd660d-baa6-4a30-ab25-a1b85d342c5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86901437-8ec6-44e0-ab4b-82257eae603b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":109.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ecc647f2-1fea-41b3-8089-2891b5cfd6ed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":32,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"affc2219-2cfc-4647-8385-d5a24fd85216","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":333.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"96666438-0b44-4512-966f-870fb145ea94","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":332.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"60fba940-968e-4f5c-b08a-ed4c90f3caa4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":581.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787136497469-123285","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787136497469-123285","text":"Students","to":"/dashboard/students"},"durationMs":514,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787136497469-123285","to":"/dashboard/students"},"durationMs":514,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787136497469-123285","to":"/dashboard/students"},"durationMs":640,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"51ce3f25-7b9f-4d92-baab-956634f97534","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"b13291a8-f1d4-4293-a920-6d4c26a69567","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":764.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":768.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":965,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8f0a5370-5d8f-4818-91df-55d8c242b972","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":52.12,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"fe263ded-3049-4e62-86f3-0702270b74e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.44,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/subjects","requestId":"c6450a5d-8930-4502-b165-258473151efd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.28,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/years","requestId":"7fef12f6-3f81-4da6-849b-6067c2e81e5c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":31.66,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?limit=300","requestId":"d288b455-e670-45ec-adc7-775e40eb8f52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.85,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/teacher-assignments","requestId":"0bbf375c-4fe3-4a89-a3cb-81ca4567f32c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.27,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/teacher-assignments?academicYearId=cmp8gtpm300d48bcnc9mas3i7&termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"fcf780c5-520e-43c4-bdba-2c4780442121","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.1,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"00510046-32c8-4b3a-86a1-6b08cb9f9b7b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r15:-trigger-manage-results","label":"Manage Results","name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/academics/cbc-grades","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.82,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"54e55ac4-e27c-49f7-9480-efa1ed0f4858","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":79.53,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments/1bc4c141-7909-4356-9f42-2b08fdc4fb8d/results","requestId":"b95eaab6-e5d4-4ee8-83c6-aff3fc12bd0f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":986.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/subjects"},"durationMs":1011,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/years"},"durationMs":1218.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":1234.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/teacher-assignments"},"durationMs":1286,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1317,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/teacher-assignments"},"durationMs":1279,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments/1bc4c141-7909-4356-9f42-2b08fdc4fb8d/results"},"durationMs":1429.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.24,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"031e8a11-5c03-4425-a51e-4c67c0dffe74","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:27","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":105.9,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"f8a8962a-d087-43e5-8fe7-2899b0bf800f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":181.35,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"4cc90ce7-0414-4d71-a02f-2d95c3b86cd6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":90.21,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"61f16628-b6b5-4dc2-83fa-303c77c2ea33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":59.67,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"1544ba5d-368e-42bd-9322-d6b6d1e39920","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":134.36,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"79a80048-8b62-47de-9d6f-22bd4ea13bbd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":171.94,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"7d3f648c-7218-4441-85e7-ba22c87d072a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":222.66,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"76973b2c-5764-457e-b037-7d39366871f0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":207.4,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"d1a7aeca-1091-41ad-991c-467a45d2c667","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard","navId":"1787136506936-825337","text":null},"durationMs":null,"event":"NAV_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/academics/cbc-grades","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/cbc-grades","href":"/dashboard","navId":"1787136506936-825337","text":null,"to":"/dashboard"},"durationMs":92,"event":"NAV_PATH_CHANGE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/cbc-grades","navId":"1787136506936-825337","to":"/dashboard"},"durationMs":218,"event":"NAV_RENDER","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":467.1,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":557.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":568.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":569.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":606.6,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":608.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":613.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":657.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.26,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"983ddf3e-a9f5-4cd4-9413-b2fe726357f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":67,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.66,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"992aa1b6-a11d-40ad-ad16-2b8ed55b833c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":97,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"38892e60-23f4-4b7e-8b33-fa7114485e9e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardians?page=1&limit=10&includeStudents=true","requestId":"067ce449-12c2-47d2-b3c0-fdda1cf7c3c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/guardians","navId":"1787136510839-256356","text":"Guardians"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard/guardians","navId":"1787136510839-256356","text":"Guardians","to":"/dashboard/guardians"},"durationMs":528,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787136510839-256356","to":"/dashboard/guardians"},"durationMs":528,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787136510839-256356","to":"/dashboard/guardians"},"durationMs":580,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"33ef1f93-769b-4017-ad35-94db2f831026","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":21,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.36,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b0481696-1a5c-4d7e-b9f5-b432c8a0cd2a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardians"},"durationMs":542,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c066c89a-e9af-41f4-a935-a812a73683f0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"daf5aa40-755e-4cd5-a449-d0dc0304415e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a63a5a8b-ab19-45fc-ab0c-96e1e7ef0cad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":70,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"90d7fa67-f4f8-4c2d-a277-04aa890edbea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1211.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1217.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fce00896-6f39-4ef7-8365-725bb2687774","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Teacher Portal","name":null,"type":null},"durationMs":191,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.56,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"585c7385-cad2-43ae-82ab-c24946e24fe5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.6,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b408d476-9ef4-4aee-ba4e-549a8484be21","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.72,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a3f1c9fb-3dbd-4f67-b353-7d4e354b40c1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.82,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/terms/current","requestId":"2c86a287-e801-497c-8138-0351e49b4df6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.68,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"b61c9d08-805d-47a6-93ea-74b6bf31b5aa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":70.56,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/my-streams","requestId":"5e54e960-89f9-4669-99ba-26d56593ec89","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":160.16,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/overview","requestId":"55f372be-e8f8-413e-9b00-0184ff7260c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":149.46,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/my-schedule?day=Wednesday","requestId":"8b9075f2-0788-49c6-8316-b20e77e95059","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.69,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/overview?termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"2f0bfe78-8125-4930-ad06-80753a5ca010","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/cbc/report-cards","navId":"1787136519531-973239","text":"Report Cards"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a2aeff2-af29-464a-a523-8ac448d8b0b9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":61.78,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/teacher/my-streams","requestId":"00887f52-00ea-4a6f-bcd2-b5815806d2ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.96,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/clocking/status","requestId":"bc38ffe8-35e2-4012-8582-4c9e03957c0b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":399.7,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":431.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/terms/current"},"durationMs":486.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":514.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/my-streams"},"durationMs":688.5,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/overview"},"durationMs":707.9,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/my-schedule"},"durationMs":723,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/overview"},"durationMs":409.4,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.86,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"14fc2920-c4f1-4964-b453-0c670f530b03","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/years","requestId":"07522aaa-ae56-4a01-b8e1-21ce974e5fb9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/teacher/my-streams"},"durationMs":437.2,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/clocking/status"},"durationMs":493.3,"event":"API_RESPONSE","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.72,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2aa18b98-0387-403f-a1ce-66c380230457","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":40.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"d0926673-8db0-44dc-8487-8aa0140b7a98","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"470b3d50-ab9f-4bb2-aede-f8a56528ca2d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments","requestId":"9430b8e9-e90d-4fa0-b6a0-ed2d37e69af9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"8897cd42-a2cd-44e3-b713-4d7dd6ad4b16","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":172.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/cbc/report-cards?page=1&limit=10","requestId":"fdbb1cd8-5964-4900-81a8-d18117b1fea8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":102.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/cbc/report-cards?page=1&limit=10&termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"ac4d344e-ff00-49c9-ac66-d130bbc9e7ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":40.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/assessments?termId=cmp8gtpme00d68bcnq5m8mk8x","requestId":"facba07e-d1bb-45cb-9d36-1d74f011933d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","href":"/dashboard/cbc/report-cards","navId":"1787136519531-973239","text":"Report Cards","to":"/dashboard/cbc/report-cards"},"durationMs":1902,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","navId":"1787136519531-973239","to":"/dashboard/cbc/report-cards"},"durationMs":1902,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","navId":"1787136519531-973239","to":"/dashboard/cbc/report-cards"},"durationMs":2028,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/years"},"durationMs":465.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"539b2875-a5cd-46d9-9c6e-4270c0466307","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":893.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1182.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":1303.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":1713,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/cbc/report-cards"},"durationMs":2204.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/cbc/report-cards"},"durationMs":2081.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/assessments"},"durationMs":2083.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bcf08f0e-c838-45ca-8b27-bb2c1c918d24","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Select class stream...","name":null,"type":"button"},"durationMs":63,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/teacher","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.29,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1d8686f6-51e5-4126-9fd2-291096fb9503","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Select class stream...","name":null,"type":"button"},"durationMs":17,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/teacher","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.18,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"23980ccf-0af6-4f0d-89cf-3106c1099bee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"error","message":"Error: Location data is required. Please enable location access.\n    at _validateGeofence (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.service.js:250:17)\n    at Object.manualClockIn (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.service.js:306:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async clockIn (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.controller.js:53:25)","service":"cbc-sms","timestamp":"2026-08-19 13:48:52"}
{"durationMs":35.63,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/clocking/in","requestId":"bea71a83-050d-4f51-b158-d1c6c43550d8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":400,"timestamp":"2026-08-19 13:48:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Clock In","name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/teacher","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":400,"url":"/clocking/in"},"durationMs":403.6,"event":"API_ERROR","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.76,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dec89353-caae-4c19-b357-233a9bd1938a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"error","message":"Error: Location data is required. Please enable location access.\n    at _validateGeofence (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.service.js:250:17)\n    at Object.manualClockIn (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.service.js:306:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async clockIn (/home/aereuxky/cbcsms-backend/src/modules/clocking/clocking.controller.js:53:25)","service":"cbc-sms","timestamp":"2026-08-19 13:48:53"}
{"durationMs":39.33,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/clocking/in","requestId":"f8aeadc7-5ce0-4765-93a1-fe02f42da1eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":400,"timestamp":"2026-08-19 13:48:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r3i:-trigger-customize","label":"Customize & Preview","name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b2dc1289-cc36-497c-99d2-6e38f6ef0117","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":400,"url":"/clocking/in"},"durationMs":576.8,"event":"API_ERROR","ip":"105.164.41.71","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.62,"ip":"105.164.41.71","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"26629976-3205-4fa2-988a-5ed5b28d9eba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r3i:-trigger-list","label":"Report Cards List","name":null,"type":"button"},"durationMs":85,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r3i:-trigger-list","label":"Report Cards List","name":null,"type":"button"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:48:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"704475c2-e149-467e-b090-18567bac78e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:48:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:49:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":1320,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":46.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4e04072d-cb99-49fd-9b4b-e787c5e1b70e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":386.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/cbc/report-cards/cmp8gts8z00za8bcnvoykm2o5/cmp8gtpme00d68bcnq5m8mk8x","requestId":"aa398fa6-db74-484c-975e-4c88babde405","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/cbc/report-cards/cmp8gts8z00za8bcnvoykm2o5/cmp8gtpme00d68bcnq5m8mk8x"},"durationMs":3231.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bbf51ce0-e609-4e75-82ed-4637a922fb9d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:49:19"}
{"data":{"id":null,"label":"Close","name":null,"type":null},"durationMs":778,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/cbc/report-cards","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f89e7a85-15d0-4bcd-8371-69a862a4cd01","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":75.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardians?page=1&limit=10&includeStudents=true","requestId":"fb34f05f-6620-4bed-9906-44ee46fecaa7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:49:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:49:21"}
{"data":{"from":"/dashboard/cbc/report-cards","href":null,"navId":null,"text":null,"to":"/dashboard/guardians"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/cbc/report-cards","navId":null,"to":"/dashboard/guardians"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f38a2dc5-8188-47f5-b742-e1bd8727944f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardians"},"durationMs":855,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:49:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"59a08f39-ca77-4ad8-8bde-8416fb87adef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:49:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:50:00","totalConnections":1}
{"durationMs":3.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24ac7ddf-109b-410b-a7a4-25656d2c4f36","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 13:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 13:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 13:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 13:55:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d16624f6-63b0-4f55-819d-b29691e98fa9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 13:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:57:27"}
{"durationMs":74.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"7ac7028f-c803-4688-b4d5-ddf7530726ed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:57:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":67.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"412e60a1-3eb6-4c41-8176-500288b464cf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 13:57:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1811.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:57:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1768,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 13:57:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"31f28a1a-6dd8-4606-8158-fdb5bf9b8e16","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 13:57:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 13:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 13:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 13:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 13:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 13:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 13:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 13:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 13:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 13:59:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 14:00:00"}
{"durationMs":4.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a42fa6d8-fb85-481c-aa4e-bf7fffa6c5ca","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:05:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0e6b7441-1799-473f-8006-2ffd25211238","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:09:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:10:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"76127a89-3eb3-4541-ac99-db05aabb5d69","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:15:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"36f9f0d6-a6c6-4d74-997a-a2b2bd2eb111","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:20:00","totalConnections":1}
{"durationMs":2.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"71e7897f-3645-416d-968f-07cdc0aca3ec","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:25:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b51d2e1f-105d-4c02-80be-7fa26bfff07d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:25:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:30:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"65f6a7cd-6c13-4632-9b59-e9552c834a9f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:34:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:35:00","totalConnections":1}
{"durationMs":2.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6c52af4f-6df3-490e-9bbe-a600d56408fd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:39:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:40:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cc46ce1e-f995-4a97-b630-e95834937ffb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:45:00","totalConnections":1}
{"durationMs":2.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81b0a9c1-f03e-4124-b16a-d1b412e39ff3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:50:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2b479a3f-c4de-43f2-95ee-1faac3de8d78","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 14:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 14:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 14:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 14:55:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a6b01bbe-1c3b-4acf-8549-d1e9f304a7c6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 14:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:57:01"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 14:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 14:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 14:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 14:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 14:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 14:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 14:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 14:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 14:59:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:00:00","totalConnections":1}
{"durationMs":3.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a12b7d42-2e06-4100-82cd-b4b9330bb2bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:05:00","totalConnections":1}
{"durationMs":1.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"52d11844-9561-4695-b572-faf5f9fa9611","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:05:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:09:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:10:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"da2291dd-831e-44dd-b241-175e7c988e9b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:15:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"23effd26-78c8-4e59-9085-d1c07d747355","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:15:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:20:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6946540d-1528-448a-bfc4-011015a29e74","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:25:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ebd2606-e56b-404d-a7b7-c5154370aa7b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:29:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 15:30:00"}
{"durationMs":2.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24772162-e854-4e1b-b203-e5e194b50eca","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:35:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e56863ab-06ba-4341-b37b-97db2c31697a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:39:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:40:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"da320562-6be7-479c-98b1-1f41c2e6fb30","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:45:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"97582cf9-cae1-4a7f-bad6-47f89696529f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:49:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:50:00","totalConnections":1}
{"durationMs":2.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ca55f910-7a93-444b-be68-3749c5f6b687","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 15:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 15:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 15:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 15:55:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b112dc22-32ec-4589-a7b6-2f6f7835651c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 15:55:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 15:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 15:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 15:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 15:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 15:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 15:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 15:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 15:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 15:59:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 16:00:00"}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"118c7312-32e0-418b-a66b-eee187f5e64b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:05:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ccc2c224-2700-4cb4-b506-b3b361f86b72","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:09:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:10:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e145362a-3800-475d-92a6-139127825210","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:15:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e7d1e077-7b74-4f09-b766-c9d6d1d13dbd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:19:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:20:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b6bceda1-79c8-4373-8d62-d6036249f1f9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:25:00","totalConnections":1}
{"durationMs":2.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4366b2e-704f-41c4-9b9e-0f96edc6bf9a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 16:30:00"}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"11d12d91-0295-4cf2-82f1-7d1d027ade47","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:35:00","totalConnections":1}
{"durationMs":2.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5112b173-6c48-4215-8a0b-4214a65c9f17","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:39:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:40:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a3fce4cf-4730-4fe6-a1d2-b2467b86f4f0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:45:00","totalConnections":1}
{"durationMs":2.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"31f1cb48-ea67-41dc-ad26-fdda01d391ea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:50:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"90237fe5-cabf-4b33-8ddf-4669c8e4cc4a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 16:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 16:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 16:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 16:55:00","totalConnections":1}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4457a285-acaf-4f9a-a83d-992dd810b72a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 16:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 16:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 16:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 16:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 16:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 16:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 16:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 16:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 16:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 16:59:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:00:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"686c7b24-c7a1-4336-85f1-aed60cb686cf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:05:00","totalConnections":1}
{"durationMs":2.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e3b3a384-0040-4b8f-9a68-ba1bb29b811b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:09:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:10:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9cec560f-c264-4a03-96eb-e37d55957dec","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:15:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"70d8070e-63c2-4665-9807-fc66f53c928f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:20:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2438eaca-824c-4f01-b2d0-0500cb199d35","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:25:00","totalConnections":1}
{"durationMs":1.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"af0a1fd5-e37c-4d99-91e0-6015a41065e1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:29:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:30:00","totalConnections":1}
{"durationMs":2.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3e35a5b-c99f-4d8d-93da-3a212b122748","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:35:00","totalConnections":1}
{"durationMs":3.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19a56db2-7abd-40f5-b092-5ed7c2e15c7f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:35:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:39:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:40:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7b792367-f712-47af-85e5-a5c3fe614a1e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:45:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e0f38605-8a1e-486d-b4aa-e47fa43704ed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:45:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:49:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:50:00","totalConnections":1}
{"durationMs":2.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"99b1ef7d-90df-4b08-9951-300cf093ccc3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 17:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 17:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 17:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 17:55:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eb19d9f7-d7f1-4c0f-b3cd-72077a29326b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 17:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 17:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 17:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 17:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 17:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 17:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 17:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 17:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 17:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 17:59:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:00:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f04928f7-3b63-4f6b-adeb-f13e95906b9e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:01:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:01:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:01:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:01:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:01:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:01:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:01:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:03:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:03:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:03:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:03:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:03:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:03:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:03:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:03:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:05:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"266d4e9f-d8d1-470d-b1a0-bff9b04864dd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:05:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:05:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:05:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:05:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:05:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:05:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:05:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:05:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:07:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:07:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:07:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:07:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:07:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:07:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:07:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:07:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:09:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:09:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:09:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:09:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:09:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:09:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:09:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:09:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:10:00","totalConnections":1}
{"durationMs":3.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68bb9612-be6b-4225-9c4b-f00e61b6001b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:11:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:11:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:11:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:11:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:11:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:11:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:11:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:11:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:13:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:13:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:13:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:13:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:13:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:13:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:13:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:13:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:15:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"10c9b56b-ea8e-45dc-9781-267b2346c14e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:15:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:15:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:15:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:15:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:15:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:15:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:15:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:15:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:17:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:17:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:17:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:17:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:17:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:17:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:17:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:17:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:19:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:19:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:19:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:19:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:19:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:19:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:19:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:19:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:20:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e8ca71f8-fca7-4ffc-b802-c6420111a435","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:21:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:21:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:21:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:21:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:21:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:21:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:21:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:21:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:23:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:23:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:23:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:23:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:23:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:23:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:23:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:23:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:25:00","totalConnections":1}
{"durationMs":2.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7a630799-3532-4e3c-84bb-270f2b564db1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:25:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:25:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:25:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:25:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:25:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:25:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:25:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:25:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:27:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:27:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:27:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:27:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:27:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:27:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:27:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:27:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:29:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:29:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:29:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:29:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:29:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:29:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:29:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:29:27"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:30:00","totalConnections":1}
{"durationMs":3.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8cbf9417-00f4-48af-9c54-741151887da2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:31:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:31:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:31:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:31:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:31:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:31:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:31:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:31:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:33:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:33:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:33:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:33:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:33:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:33:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:33:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:33:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:35:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5bfd41b3-4042-4648-bcf8-221291051707","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:35:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:35:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:35:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:35:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:35:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:35:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:35:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:35:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:37:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:37:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:37:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:37:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:37:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:37:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:37:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:37:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:39:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:39:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:39:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:39:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:39:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:39:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:39:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:39:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:40:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3af4919c-9a12-4d10-97e2-8162866d9510","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:41:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:41:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:41:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:41:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:41:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:41:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:41:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:41:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:43:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:43:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:43:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:43:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:43:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:43:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:43:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:43:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:45:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0d0610c2-1755-451a-8f10-2ee48250893a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:45:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:45:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:45:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:45:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:45:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:45:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:45:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:45:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:47:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:47:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:47:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:47:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:47:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:47:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:47:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:47:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:49:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:49:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:49:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:49:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:49:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:49:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:49:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:49:27"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:50:00","totalConnections":1}
{"durationMs":2.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b497ef0a-c557-4a1c-96fe-8ab0d4e5060d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:51:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:51:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:51:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:51:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:51:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:51:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:51:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:51:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:53:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:53:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:53:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:53:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:53:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:53:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:53:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:53:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 18:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 18:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 18:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 18:55:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"39e898c3-9442-4b82-b070-2176f4671880","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 18:55:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:55:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:55:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:55:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:55:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:55:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:55:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:55:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:57:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:57:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:57:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:57:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:57:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:57:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:57:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:57:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:58:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-19 18:58:13"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-19 18:58:16"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 18:59:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 18:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 18:59:15"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 18:59:17"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 18:59:19"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 18:59:21"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 18:59:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 18:59:25"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 18:59:27"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:00:00","totalConnections":1}
{"durationMs":2.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d18df46b-84ee-4df7-9afd-0e12274e5da5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:00:02","userId":null}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:04"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:06"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-19 19:00:06"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-19 19:00:14"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-19 19:00:22"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-19 19:00:22"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"[Payment Email Catch-Up] Initializing (interval: 120000ms)...","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✓ [Payment Email Catch-Up] Job active","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-19 19:00:23"}
{"durationMs":13.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/health","requestId":"6dba9118-e15a-48ec-95a8-a5b4b09eb793","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:00:37","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:00:53"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:00:53"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:00:55"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:00:57"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:00:59"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:01:00"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:01:01"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:01:03"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:01:05"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:02:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:02:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:02:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:02:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:02:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:02:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:02:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:02:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:02:35"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:04:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:04:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:04:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:04:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:04:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:04:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:04:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:04:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:04:35"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:05:00","totalConnections":1}
{"durationMs":8.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"589ce879-99b9-4c35-aef8-c2c318c5f645","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:06:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:06:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:06:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:06:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:06:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:06:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:06:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:06:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:06:35"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:08:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:08:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:08:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:08:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:08:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:08:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:08:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:08:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:08:35"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:10:00","totalConnections":1}
{"durationMs":3.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1ebc9107-2209-4134-b229-d0cd87a2b8a8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:10:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:10:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:10:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:10:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:10:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:10:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:10:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:10:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:10:35"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:12:00"}
{"level":"info","message":"[Payment Email Catch-Up] Found 6 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-19 19:12:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHJOP32ZDS (c23df065-1e91-4224-965a-9877a1884bea)","service":"cbc-sms","timestamp":"2026-08-19 19:12:23"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIEI38FIO (821ee471-25eb-42a9-bd7d-5da41a421b28)","service":"cbc-sms","timestamp":"2026-08-19 19:12:25"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHIOP2Z57U (009af4b2-6426-40d1-9cda-5cba7b0a6f17)","service":"cbc-sms","timestamp":"2026-08-19 19:12:27"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XMRJ (28e2d8b6-e4db-44b4-8a66-8c1f3eb75843)","service":"cbc-sms","timestamp":"2026-08-19 19:12:29"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XELQ (2432bac5-ff78-4e32-aa1d-362c95638979)","service":"cbc-sms","timestamp":"2026-08-19 19:12:31"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCPT-UHHOP2XHDX (dbbc4a3d-2abb-4568-b03c-a9f4bac1444f)","service":"cbc-sms","timestamp":"2026-08-19 19:12:33"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 6 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-19 19:12:35"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:14:00"}
{"level":"error","message":"[Payment Email Catch-Up] Job error: Table 'aereuxky_cbc_sms.payments' doesn't exist","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async catchUpMissingPaymentEmails (/home/aereuxky/cbcsms-backend/src/jobs/payment-email-catchup.job.js:31:29)","timestamp":"2026-08-19 19:14:28"}
{"level":"error","message":"[Email Queue Job] Error processing email queue: Table 'aereuxky_cbc_sms.email_messages' doesn't exist","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async MySQLQueryInterface.select (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async EmailMessage.findAll (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/model.js:1140:21)\n    at async fetchPendingEmails (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:134:10)\n    at async processQueue (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:81:27)\n    at async processQueueSafely (/home/aereuxky/cbcsms-backend/src/jobs/email-queue.job.js:24:5)","timestamp":"2026-08-19 19:14:28"}
{"level":"error","message":"[Email Queue Job] Error processing email queue: Table 'aereuxky_cbc_sms.email_messages' doesn't exist","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async MySQLQueryInterface.select (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async EmailMessage.findAll (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/model.js:1140:21)\n    at async fetchPendingEmails (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:134:10)\n    at async processQueue (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:81:27)\n    at async processQueueSafely (/home/aereuxky/cbcsms-backend/src/jobs/email-queue.job.js:24:5)","timestamp":"2026-08-19 19:14:38"}
{"level":"error","message":"[Email Queue Job] Error processing email queue: Table 'aereuxky_cbc_sms.email_messages' doesn't exist","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async MySQLQueryInterface.select (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async EmailMessage.findAll (/home/aereuxky/cbcsms-backend/node_modules/sequelize/lib/model.js:1140:21)\n    at async fetchPendingEmails (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:134:10)\n    at async processQueue (/home/aereuxky/cbcsms-backend/scripts/email/processQueue.js:81:27)\n    at async processQueueSafely (/home/aereuxky/cbcsms-backend/src/jobs/email-queue.job.js:24:5)","timestamp":"2026-08-19 19:14:53"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:15:00","totalConnections":1}
{"durationMs":2.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96468ac4-4cfd-47e5-b135-be2ec235eaa6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:20:00","totalConnections":1}
{"durationMs":3.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"22653eb8-d8bc-4d4e-9593-11b575e4fb7c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:25:00","totalConnections":1}
{"durationMs":2.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"21b0feb0-76b7-45da-896e-d8b8ba8d86c7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:27:00"}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:27:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75de000b-9da1-46d7-872a-b68608056c7f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:27:42","userId":null}
{"data":{"id":null,"label":"Register New School","name":null,"type":"button"},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:27:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9739ad24-dcb4-463b-bc27-fa00d12ddd8b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:27:45","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/onboarding"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/onboarding","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:27:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/onboarding"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/onboarding","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:27:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ddc9011c-9d39-4f54-86b0-3e46b4bd376c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:27:46","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:28:00"}
{"data":{"id":null,"label":"Cancel","name":null,"type":"button"},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/onboarding","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:28:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/onboarding","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:28:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/onboarding","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:28:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"315b8e74-d8ab-4226-b534-ae1e0aeda438","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:06","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:28:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8db0b326-9686-47a4-8ad5-07ced728e4b8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:19","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:28:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"958143c9-b29f-425f-8d3c-80b04a8a1ebb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:20","userId":null}
{"durationMs":876.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"b8d23fbe-ac66-40a7-936b-a745f8d36340","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:20","userId":null}
{"durationMs":58.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"77be96d6-fe80-41bf-9f47-e75edd4e3111","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":131.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"f1d270c3-7948-475c-b93f-960a267d484e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":82.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"447b1c9e-1e3c-41d4-9805-4e624c7f078d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":156.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"7d9005ac-339a-40f2-b3b1-09403e203b94","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":243.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"4e09e9e3-4adf-418f-bec6-a0eb0cfcf382","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":181.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"279802a8-8bf4-45e0-893b-c9f4499a6a3c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":219.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"dea42741-258c-4d10-aa30-e46f346a120f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":336.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"4d64d89d-eff1-48cf-9da0-141779599e6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":312.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"d327d6c6-f31d-4e60-a60c-d3e404399575","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1286.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":452.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5a9ef014-3296-4035-9b76-e0ea8f93781d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":159.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"a6f7c092-a521-4bb6-9882-8586b5e2c2a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":190.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"875ca62e-39f6-47f5-bdca-d903c119352a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":201.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"59524221-1fa1-4383-904f-339a2012cf1f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":234.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"bfc991d7-6a42-408a-bc20-86c4030494ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":246.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"8899a6fa-1428-4d12-ba30-0f28d1ed3fc3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"b0f352ba-43f6-4ba0-b4cb-6880e66e64d9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":107.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"6dd93c0a-7807-4453-ab1a-a9abd6af8fc5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":95.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"d22302b2-b0c9-40c0-8c46-40bac816583e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":95.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"bfce9c57-9252-4495-8125-3a483ef32834","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":2153.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":2516,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":2517.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":2518.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":2518.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":2383.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2384.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2384.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2387.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":614.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":639.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":704.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":705.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"743e56cc-4ad0-4a44-943a-a639308feeac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":885.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":927.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":973.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":974.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4ef7f3a1-3d18-4458-8c1f-94272bc1f4b0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":33,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"982aa7e5-9ec0-4d96-8f86-d4625e96497b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Blue","name":null,"type":null},"durationMs":42,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:28:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1b358c2a-998d-452b-b1a5-b81f58b9ae18","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:28:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:29:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":30,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:29:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2e6baba4-416a-4dc3-bfa8-bbae460ddc8c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c366a958-3801-43bc-a688-219aeb83085d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:17","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c8856f9c-a4a9-4e18-9f1d-dde531e0fd4f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:19","userId":null}
{"data":{"id":null,"label":"Orange","name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7cb2ca0c-9240-4774-96fb-5128abd2572b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:20","userId":null}
{"data":{"id":null,"label":"Purple","name":null,"type":null},"durationMs":73,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"948ee14f-2884-4348-9902-44ac13f35953","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0f8d9618-40ab-439f-b813-3a39e12e3ee0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:44","userId":null}
{"durationMs":607.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"4c6f5acc-9bd7-4f63-a3ad-01ceddd9f6f6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:45","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"47a8a840-9c2c-4d54-b144-54e6e64121f9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:45","userId":null}
{"durationMs":58.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"a38cc9d8-874c-4940-b94a-c42b0b7dc88c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:46","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ed689b90-777d-48aa-9885-a1bfced643e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:47","userId":null}
{"durationMs":25.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"abbe0f8d-9638-4ef0-9062-ee51cec26a20","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:49","userId":null}
{"data":{"href":"/platform/schools","navId":"1787156986248-457576","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/schools","navId":"1787156986248-457576","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":481,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787156986248-457576","to":"/platform/schools"},"durationMs":499,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aa8d7838-c494-4ad1-a659-0c1dc141ddc7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:49","userId":null}
{"data":{"href":"/platform/modules","navId":"1787156989854-146315","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4362679d-b79f-4f67-9bc9-1523f96357be","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:53","userId":null}
{"durationMs":43.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"109af597-882c-4e02-81df-0d76ef8b3ff3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:54","userId":null}
{"durationMs":34.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"a1816bc9-a128-4774-bd70-19666bded3eb","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:29:54","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/modules","navId":"1787156989854-146315","text":"Module Access","to":"/platform/modules"},"durationMs":2026,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787156989854-146315","to":"/platform/modules"},"durationMs":2026,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787156989854-146315","to":"/platform/modules"},"durationMs":2054,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"href":"/platform/modules","navId":"1787156992296-936743","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:29:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c063a05e-60b7-4f8d-9ec2-60610267f864","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:55","userId":null}
{"durationMs":18.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/features","requestId":"b1ddd1b0-6043-4d74-8521-cd36ac04e557","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:29:58","userId":null}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:30:00","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6362dd94-2713-49e5-9688-16f50069f73e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:30:02","userId":null}
{"durationMs":24.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"e329f433-54d0-45a0-9857-0cfc4a72ac5f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:07","userId":null}
{"data":{"from":"/platform/modules","href":"/platform/modules","navId":"1787156992296-936743","text":"Module Access","to":"/login"},"durationMs":26511,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:30:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":"1787156992296-936743","to":"/login"},"durationMs":26511,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:30:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":"1787156992296-936743","to":"/login"},"durationMs":26540,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:30:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3e8e4030-d244-4331-abe0-2d380ce3211d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:30:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:30:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4037dba7-b464-496f-bc9e-66426446b27c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:30","userId":null}
{"durationMs":715.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"19a22622-9b85-4b79-b887-94f020c2fb81","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:31","userId":null}
{"durationMs":41.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"d1658ef4-ed8e-416a-99db-e1ee6ae0d9f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":556.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"28a85474-a046-41bd-98eb-52e9598a3c66","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":462.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"7f9acfce-a03c-4e4c-9149-e67029e99e5f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":243.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"6ba8c780-2a2b-44bd-869a-f3640bca9cf7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":779.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"477a2da0-a733-4a69-9b78-8f87c39ddcf8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":207.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"04af4b51-71c9-4e21-a965-2de3640ccaf1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1100.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":440.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":108.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d7afa11a-f35f-4bbe-95e3-be4e7cc581df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":296.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"35e201c3-b8c1-4c2c-947d-96f03597c75b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":782.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"99562f4f-94d1-4023-84e2-d35c91167020","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":253.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"4211e565-8337-472b-a804-ba76afb89cb1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":599.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"394aa82b-d53f-4757-952f-2ad0488e1835","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":495.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"66ad311e-0097-49b1-bd09-2ca0f399102e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":322.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"892dd513-5467-42cf-8831-c32c4460f16b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":858.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"921b13f2-8883-4d53-be69-c690bdac721d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":516.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"0ce476a3-2cfe-473a-b8a1-2d88761e4cf0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":423.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"b4e61887-f46f-4c74-9e26-68b2271ac66e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":421.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"70637f7e-f040-480c-830b-3f5cbd07a3f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":450.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"1d5d593c-3f26-42b4-a1ad-cf24534c9335","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":917.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"9d0c4716-11be-4a3b-918e-06a9009146ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1001.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1122.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1194.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1247.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":893,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":901.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1330.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1022.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1408.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1409.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1142.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1568.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1569.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1186.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1570.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1572.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1571.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"88e1f1bb-3f22-4a3f-80f9-507551d05d93","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787157053650-84701","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a8c66883-017c-411c-9d57-f3f5591ffe9c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":94.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"7c8a021c-6191-4528-ae8c-273133bf18b3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":157.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"a3f9ac86-04f1-4bfc-805f-7719c5e44431","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":150.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"f268cc87-3a99-4604-ad51-f8a4c5453e4f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787157053650-84701","text":"Students","to":"/dashboard/students"},"durationMs":1568,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787157053650-84701","to":"/dashboard/students"},"durationMs":1568,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787157053650-84701","to":"/dashboard/students"},"durationMs":1630,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":547.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":583.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":584.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:30:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"62c8f0c1-9d44-4d72-b34f-34c1cde6d7d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:30:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":79.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students","requestId":"5358e634-778d-49a8-8490-4e9facbc0531","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":46.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"27234b72-4997-4b3d-955d-915f6325e6c2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:31:00"}
{"data":{"id":null,"label":"ID Cards","name":null,"type":null},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:31:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6b8141b3-1aed-4752-9f51-23485d878a0f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":494.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:31:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":520.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:31:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":29.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b8d4507e-c5cd-4d0d-ada4-c21e4bcb50c7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard/students","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"55d7fa97-f75c-4f92-a9eb-07b0d984228a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:03","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01ac6b5b-5ff3-4db4-89bb-d53b744b8d32","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:13","userId":null}
{"durationMs":538.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"6034405f-08a9-4f82-8890-3df11395c179","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:13","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"44eec0d9-e35c-4799-8ce0-710258a768a8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:14","userId":null}
{"durationMs":43.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"e9d53d7f-54da-4f18-8a8d-687f0f718e62","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:31:14","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"76a36d27-f908-49b7-9a08-409120559669","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:14","userId":null}
{"durationMs":36.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"575470ba-5c5a-4dea-8fea-9a99981ddb57","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:31:20","userId":null}
{"durationMs":37.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"54faf1a5-1cd8-47b3-95f5-7631e41a91be","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:31:21","userId":null}
{"durationMs":52.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"daad0c51-13d4-4161-a610-e62fa29be6f5","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:31:21","userId":null}
{"data":{"href":"/platform/schools","navId":"1787157077530-980115","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/schools","navId":"1787157077530-980115","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":23,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787157077530-980115","to":"/platform/schools"},"durationMs":60,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"href":"/platform/modules","navId":"1787157078256-358552","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/modules","navId":"1787157078256-358552","text":"Module Access","to":"/platform/modules"},"durationMs":14,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787157078256-358552","to":"/platform/modules"},"durationMs":62,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"219e47c2-384d-4d2f-b3cb-7554be1ce7d9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:21","userId":null}
{"durationMs":23.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"7455b7c7-699e-44bc-96d9-17024580c7e4","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:31:24","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":44,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"97c5483e-2f0e-4ea7-8a95-4e779ab473e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:51","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":97,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:31:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e436ae1d-a1bc-46e9-8907-2abbfce85437","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:31:53","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:32:00"}
{"durationMs":49.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"8e39b462-c648-43f8-89cc-92da48d04389","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:20","userId":null}
{"durationMs":32.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"a6fcc406-1f73-4133-ab68-af2d8129baaa","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:21","userId":null}
{"durationMs":46.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"d6fea5f3-c115-4023-b070-1fc28c87d34d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:21","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f85bba1b-89a9-4db2-a6d1-a5b11775a5b1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:21","userId":null}
{"durationMs":22.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"be5e3b71-bde2-48e5-84cc-5d941a1b3f1d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:25","userId":null}
{"durationMs":28.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"6c734e15-c777-4714-a7db-833b96dcf7d8","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:26","userId":null}
{"durationMs":32.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"bb477d47-bd7e-40a8-b5f0-dd6a173cf2ad","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:26","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6f8e4291-6b0b-4690-ad73-0b7dfc114e9a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:26","userId":null}
{"durationMs":32.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"5107f150-c4e8-404a-bb00-b577e1dc3574","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:37","userId":null}
{"durationMs":25.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"cf45d188-099f-4162-9ec7-8cb1b2ee34fe","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:38","userId":null}
{"durationMs":31.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"307832ce-25eb-4de2-8c94-aaa314a0c047","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:38","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d7454e53-cdd7-43de-b3ce-f8e977889fe4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:38","userId":null}
{"data":{"from":"/platform/modules","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e12a0e09-4554-4814-a963-b86f93fe3806","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:45","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"83b83f0b-0d00-4a21-be76-10ae3ff20d5d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:56","userId":null}
{"durationMs":694.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"39c8031e-03bd-4620-9a6c-8b38465244b2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:57","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:32:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"020f12c2-a14a-48fa-b6a1-30fb0c063196","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:57","userId":null}
{"durationMs":56.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"78bbd2f7-bec4-4c34-a6ec-1139f5977957","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":464.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"c2cfcb72-54f6-4630-847b-16c6033b59fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":308.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"25918ff1-f64b-434b-95e7-25edec6f5769","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":698.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"73606146-1256-4e10-87b4-29e8c537ed48","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1035.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"39d9d5e6-f2c3-410d-a101-fb6754c0e4f9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1189.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:32:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:32:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:32:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":553,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:32:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":143.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1a152cab-34b9-4f81-9ad9-0df2657f7211","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":370.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"efe4a5b8-65d1-421d-9b35-14f757c6f1f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1000.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"90c3d835-ec9e-487d-b29c-60aaf3545266","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":580.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"6505e737-7611-4136-937e-8900c7edd17e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":550.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"e37845bf-625d-4eb3-9625-07fc00d23e54","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":496.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"4b9090d5-ab2d-4a45-ad6d-e92f60ca8a1d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":918.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"f8a17400-7dac-4e2e-bbe7-696feb5acf78","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1458.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"c2e4f8da-21c2-4401-a2b9-1f074de22c53","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":908.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"76b59b43-f899-4017-b241-7303209759f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":794.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"f055e813-447d-4081-b347-06f150d36b85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":892.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"2a2162e2-2073-4e45-a4d9-7b3d6d76f566","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1506.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"542e4124-a7e5-41ab-b1b4-f05f41bb464b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":885.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"4a957f54-01f9-45ce-b5bc-a9efce660d1e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1554.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"f3dfb3a0-f249-4eaf-a323-04a6a0f6075e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:32:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:33:00"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1420,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1525.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1593.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1616.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1361,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1958.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1481.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1491.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1492.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2035.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":2055.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2091.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1642.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":2134.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":2135.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":2185,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":2185.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"45a345b0-c24a-442f-ba22-7cf6106f7908","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":47.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"3c39c7b4-d728-4bb9-8a53-c0332948ef44","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/finance/payments","navId":"1787157181968-227108","text":"Payments & Deposits"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/finance/payments","navId":"1787157181968-227108","text":"Payments & Deposits","to":"/dashboard/finance/payments"},"durationMs":787,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787157181968-227108","to":"/dashboard/finance/payments"},"durationMs":787,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787157181968-227108","to":"/dashboard/finance/payments"},"durationMs":813,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":44.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4cc8de14-6d5d-4e85-a661-28dfd333409b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/banking/banks","requestId":"3365ba75-6e59-473c-9674-1d6adc3b66c9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:05","userId":null}
{"durationMs":400.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/invoices?studentId=","requestId":"bc075910-468c-45a6-9548-3309c9f71570","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":486.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/banking/banks"},"durationMs":629.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/invoices"},"durationMs":969.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"59cfe482-4b05-412c-ac15-bd9bfa80dff2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/finance/payments?bankVerificationStatus=PENDING_VERIFICATION,UNVERIFIED&limit=100&sortBy=createdAt&sortOrder=asc","requestId":"e4dd0776-5ce8-42b8-80c7-8ba818a47681","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Unverified Deposits","name":null,"type":null},"durationMs":49,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Payment Settings","name":null,"type":null},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3bbf44e6-7761-4656-adc3-fb6a1c0d5090","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/finance/payments"},"durationMs":1640.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"69a5e598-0313-407c-b0a4-d9400bdc818a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":115.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"43fb4e6d-d53c-4333-af1e-9a08cee1711c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":251.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ad123411-d9f4-48e1-9ee6-8ad383987ec7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":168.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"3daa5dad-1df8-48a6-8030-23d14f69e20d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":208.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"2f8e3971-48c4-422d-8c69-7ad24f73fb4d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":272.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"209ad1dc-2a4c-48ba-bc19-1caeb68eae52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":292.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"acefcc87-9581-4eeb-ae24-876d947f8c18","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":195.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"1b6462f9-2a66-4297-bead-ffd4c2a406c4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":244.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"3d38c95e-6124-4d00-81b1-9ac533fc329e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard","navId":"1787157191250-75527","text":"Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/payments","href":"/dashboard","navId":"1787157191250-75527","text":"Dashboard","to":"/dashboard"},"durationMs":41,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/payments","navId":"1787157191250-75527","to":"/dashboard"},"durationMs":104,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":703.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":729.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"797da4e0-a9d7-484b-ae47-0c668e45ad65","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":768.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":769.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":791.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":791.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":791.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":795,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01234943-4aee-4458-ae27-395ae37ace02","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8e8cf6fb-2e18-4465-b3dc-d25bea7f6d2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0bbb41cf-a25f-4c40-9b4f-1cf7faab679e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":12.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"de33d0f1-7ead-4806-babd-8534db9f48bf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:33:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"891f4dcb-64a2-402b-b375-74660b483f50","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:33:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:35:00","totalConnections":1}
{"durationMs":4.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1889c15b-3b8d-41f7-b300-ed53b653f5ba","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:37:00"}
{"durationMs":87.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"e87d28a1-edae-4763-b1b3-18a3e439d81a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:37:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1315.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:37:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3dc1c827-9e05-4cf9-b9e0-99121a705895","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:37:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":271.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"a9e25551-1076-4468-9b1a-a08400d14593","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:38:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":224.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"336a8d22-5f4e-42bf-b40f-981a981ad911","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:38:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:38:00"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":672.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:38:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":597.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:38:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2ed3446d-87f9-4ccb-b6c5-5bb0010f9c10","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cda91cee-224e-4d27-8ac9-67dac62ceac6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:05","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ee4af6d1-ea11-4464-b17c-706052b37b99","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:06","userId":null}
{"durationMs":117.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"fc6b657b-4ce8-41e1-9d5f-107942e4f3ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":549.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:38:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":43.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d748f2a8-ad15-4262-b654-cade13f1d399","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":171.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0536ad9a-59b5-430b-a32f-90abcb200f90","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":529.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:38:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c2c5b24b-f8ab-422e-a65e-3b2a998af756","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9a33de15-0562-48ae-96ca-5295b5fc43c3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:24","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:25"}
{"durationMs":19.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"12abdac7-f41f-4c33-8aba-9678858f1fbe","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:25","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":74,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":551.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"73ad580c-89c2-4dea-b99a-72c15a622dfa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:25","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:31"}
{"durationMs":14.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"cd401bb7-2364-421e-9f70-77086ec41417","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:31","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":30,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":473.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b584488f-0b19-4dac-8e89-9a83af348438","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:32","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:34"}
{"durationMs":14.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"b2877132-fafb-4dcb-a8fe-f8a75f7e49b1","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:34","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":534.7,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a336d1a3-897c-45b0-87a1-4ad2c7ee93be","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:35","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:37"}
{"durationMs":8.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"3043d9b3-72b3-46dc-9b33-1851dbfd58de","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:37","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":430.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01844996-a349-48c5-ae53-fbd6fb0d9149","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:38","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:45"}
{"durationMs":18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"a6e56b45-71f3-4d7d-892b-ea42cc9bf85f","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:45","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":506.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2e80dae8-9bbd-4678-b9a1-39e08b7b2215","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:45","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 19:38:46"}
{"durationMs":16.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"8531df9b-8724-4000-9b41-a8fa388394da","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:38:46","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":393.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c15ba20-6435-4ac7-9336-020c15e5bd36","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:47","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":59,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:38:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cac0ac50-223f-43ea-b43f-1e22c814add6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:38:49","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:39:00"}
{"durationMs":108.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5bcca02f-234d-4dec-b36c-018db9299916","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":131.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"09dbf718-e14d-4e07-99dc-5845b5ee521f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":497.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":544.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":36.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7aef57e4-2aef-4ffc-8104-6166c02238ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":712.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"3317a7fb-183c-4355-8d8a-359c2b2326c2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:04","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:39:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"05952235-777d-40fa-bc82-3439ca930e3d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:05","userId":null}
{"durationMs":81.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"4d36d0f0-ead9-4b59-8300-ca45af9c1eb2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":88.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"e3fba59c-5d8f-4b0a-b2ec-343722a10534","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":107.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"a8cd3619-0631-4fa3-83fb-4a5a97e13cd4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":81.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"ffe5c9cd-f2e5-4070-a18c-8ac03118a3b4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":120.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"7d01c12c-34cf-4414-8a59-ca847d6f3ab9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":40.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"897ab544-5fce-4082-81db-75cdec897d1d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"db16953f-694d-4819-b916-b8585227f606","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":135.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d37301cd-bb6c-4601-b38f-9bfad58f0a6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1107.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":587.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c56251fa-fabc-435e-ab2b-c348d30bdc88","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:06","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":158.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"dc74b071-b45e-4cc7-bc94-81571eab49ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":165.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"133268ef-c46e-4b3d-8661-0418ad2f8d2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"22307c6d-0ccd-40d2-abaf-5fac2654000c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":85.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"d68506ef-b3d3-4376-a513-e4fb38410b7f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":67.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"233656e1-cf6a-4adc-a7b1-615f5efad6ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1390.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1397.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1401.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1405,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1406.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1432.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1441.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1446.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1456.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":571.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":88.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"915c51d9-bc1d-4e3b-aef4-e4f7feef58a5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":263.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"69d5f256-3874-41e4-8499-a5888fc993fa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":339.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"277ab69e-7b31-490a-9f6e-984bd034d3f4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":349.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"bbf0847a-d8d2-4d53-841a-1c2f2db58664","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":349.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"74cd2cab-f621-43d0-a0c5-d7a1524f7379","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":482.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"063002e8-b29a-4b5f-894d-a05f1ecccaf7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":612.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":634.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1232.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1333.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1337.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1339.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1341,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":33,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"569039ed-3f8d-4cfa-a75f-6611a4726b6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:39:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:39:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bcbc119d-b28d-4751-aeed-08d8410d9327","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:13","userId":null}
{"durationMs":54.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"2c3cd4ae-5dca-4e72-9d45-98da58a7d749","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":512.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 19:39:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d92074f8-46f2-4af0-a997-fb61ca0206e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:39:18","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:40:00","totalConnections":1}
{"durationMs":6.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f823a96-0490-43d0-ae95-ca9c6d4dc9eb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:41:00"}
{"data":{"href":"/forgot-password","navId":"1787157661103-602915","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787157661103-602915","text":"Forgot password?","to":"/forgot-password"},"durationMs":508,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787157661103-602915","to":"/forgot-password"},"durationMs":508,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787157661103-602915","to":"/forgot-password"},"durationMs":518,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eb51c508-0c88-4a1d-992e-89f3cbbe819c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:41:05","userId":null}
{"durationMs":14.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"a0378a32-50db-45e0-b7aa-df32553e7835","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:41:09","userId":null}
{"data":{"id":null,"label":"Send Password Reset Link","name":null,"type":"submit"},"durationMs":46,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":510.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:41:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e3f21c76-c99e-4b3e-9ffd-fb43f6e2f121","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:41:10","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:44:00"}
{"durationMs":2.96,"ip":"102.212.247.98","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/health","requestId":"16ae2085-cec6-4ec9-a5a6-12e250f14402","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 19:44:40","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:45:00","totalConnections":1}
{"durationMs":2.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dcb63083-7086-4001-b8ed-4309283df441","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:47:00"}
{"data":{"id":null,"label":"Back to Sign In","name":null,"type":"button"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4c1ce429-bb3b-4cd5-b404-cfa0ed5defc1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:01","userId":null}
{"data":{"href":"/forgot-password","navId":"1787158018096-753984","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787158018096-753984","text":"Forgot password?","to":"/forgot-password"},"durationMs":43,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787158018096-753984","to":"/forgot-password"},"durationMs":52,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f67d45d1-fc35-4920-a766-69563327989c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:02","userId":null}
{"durationMs":18.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"f2d4ab2d-cd00-4e0d-831d-b5dac863bf73","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:05","userId":null}
{"data":{"id":null,"label":"Send Password Reset Link","name":null,"type":"submit"},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":439.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d87cf84e-9c44-44c5-8484-016cf514cb34","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:06","userId":null}
{"durationMs":27.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"31cdb843-4cab-4f5b-867a-0ed3fd788177","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:34","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":569.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 19:47:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3f17bd40-d999-43d6-bf53-59d7ba604b73","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 19:47:35","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:50:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ef5fa275-d1be-4cfc-aee6-b5e9a1a83a33","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 19:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 19:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 19:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 19:55:00","totalConnections":1}
{"durationMs":1.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"598a31c8-8c6c-458d-b37d-8268984f039c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 19:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 19:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:00:00","totalConnections":1}
{"durationMs":3.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2bd01756-e7bc-4cc2-9d5a-7fcc3779fdb0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:05:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc98ce4f-6c7c-4989-82be-974971696efe","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:10:00","totalConnections":1}
{"durationMs":2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a64bb3a8-1ea9-4c4d-83cf-02e9c3524377","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:15:00","totalConnections":1}
{"durationMs":2.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"954ba036-af80-424c-81e8-968e60804fda","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:20:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"527fbb3b-6c3d-4a8a-95c1-862bdc2093bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:25:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dfe86233-43f5-41a8-b4d4-2ac713c9574f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 20:30:00"}
{"durationMs":3.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"40e672e4-628e-4ffc-be58-29252fd005b4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:32:00"}
{"data":{"from":"/dashboard/guardians","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:32:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard/guardians","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:32:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4b5bf4af-d0fe-454e-8133-c432b829848c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:32:25","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:33:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:33:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4f50a005-50db-4d5d-8570-fe94a71cdd40","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:33:44","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":110,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a224983b-6074-4418-8886-dda40eb6e1aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:33:47","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 20:33:47"}
{"durationMs":37.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"89c35d62-0c5c-4a52-a35b-fc9a5e2cfcc7","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 20:33:47","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":1551.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:33:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e9baa3be-88d9-4e67-b754-352ba3a3b77f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:33:49","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:34:00"}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:34:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"514fffcf-8f01-432b-9e27-a052c052fab8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:34:54","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:34:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0bd334cd-40e1-4239-83a1-fbbb62075163","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:34:56","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:35:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2aa4a822-d569-43c3-a708-ac78397c7904","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:35:01","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 20:35:06"}
{"durationMs":34.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"177e976f-5140-4eb1-b93f-79abf8799d73","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 20:35:06","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":47,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":386.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eccf74d4-46ab-41e9-9715-32d898cdbae7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:35:07","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"24c029ec-79bc-4fce-83ed-2c9aba6623ac","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:35:10","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c350d698-63d6-488c-98bd-105ecae2b06f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:35:12","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 20:35:13"}
{"durationMs":15.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"2256c714-fca5-4f6f-bee8-45fbd3a9d484","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 20:35:13","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":39,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":679.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:35:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a42adf0f-98f9-4dc4-b132-76938ebea5ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:35:14","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:36:00"}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 20:36:45"}
{"durationMs":35.74,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"6651526f-80aa-4664-9211-c96da6948a1d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 20:36:45","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:36:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":387.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:36:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"accade96-6829-4e32-90a5-6033eb5e8b37","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:36:46","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:36:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"88e3b52b-5f21-42de-b51b-74814e32b9e0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:36:48","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":76,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:36:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3997df01-bb1f-42fa-880d-a4586be60a23","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:36:50","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 20:36:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b8aa42cb-d253-4893-8106-c2b1088fe135","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 20:36:52","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:40:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4ab92889-7eec-444e-b46c-bf06fc3b4abb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:45:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ef05e0d0-ca98-481c-bff8-2faeca53a691","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:50:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d52d866f-ec95-4376-9e39-262bca793ad1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 20:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 20:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 20:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 20:55:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c17cd8de-a2d7-4d6d-8883-e5ff35d8952f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 20:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 20:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 21:00:00"}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24f7b9c4-1307-4b96-bc10-7306939ef737","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:05:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3eb21055-38d8-4ea2-ae83-58ec7f3233a7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:10:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d44153d0-6048-4fc1-81e8-bcc04f182406","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:15:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c6102de7-9d18-487a-9e78-f9ea704f462f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:20:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81d7298f-8fec-4b84-86ce-050adf85d4a7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:25:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7643d9af-8e82-4b0e-8107-d076ac19df9f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 21:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:30:01"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 21:30:01"}
{"durationMs":3.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"733e4dc2-6d5b-4672-8621-18870b84ba48","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:35:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9eaab8fb-9083-401c-9426-7161d52f7ee3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:40:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1ff72be6-0a73-412b-bb53-8a0d4d98793f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:45:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5736451a-200b-45bd-9f9c-e2c27b9cbf74","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:50:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ba093ed1-51f0-4f90-9161-cbaa30334c07","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 21:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 21:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 21:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 21:55:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"07f67f76-1e0d-498e-82a7-6c11815242a9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 21:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 21:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:00:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be875f67-63cb-4cb3-87a1-e6947170229f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:05:00","totalConnections":1}
{"durationMs":1.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19aa2c48-0427-4d25-ab72-819e0f776ff6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:10:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1d422f89-c705-4e69-b622-452c99c2d27e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:15:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"54a655ce-0d38-441b-909c-3f5cdc927dc9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:20:00","totalConnections":1}
{"durationMs":3.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4a949cc-2a3d-4d58-bb59-3a816320d781","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:25:00","totalConnections":1}
{"durationMs":3.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dfa1145d-b4eb-4e43-8014-77dfaf8fafe4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 22:30:00"}
{"durationMs":6.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b2b92af9-0184-456e-886b-645046a90e93","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:35:00","totalConnections":1}
{"durationMs":2.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"442f592c-f42f-4043-836f-9fc3d3e6b750","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:40:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f9fde054-d5ae-42ad-9ae8-68bbc3c2127c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:45:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"40cb07df-6e76-4d1e-ba43-6405ade100fb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:50:00","totalConnections":1}
{"durationMs":2.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f8fc7ce3-3dec-45cb-8fea-c69044175186","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 22:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 22:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 22:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 22:55:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7e7742c8-fc74-4212-907c-5934daea7d20","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 22:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 22:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:00:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5df049b-5c39-41fc-8593-48c4b7f1a378","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:05:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0e11cf53-25af-4e57-8038-39afbb8c6597","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:10:00","totalConnections":1}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"83dd8c57-e590-4690-8ebf-631c43bc1ac5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:15:00","totalConnections":1}
{"durationMs":2.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fe165f3-a2b6-49e7-bc3d-9e41ef40e56b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:20:00","totalConnections":1}
{"durationMs":2.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d0fb2595-3c8c-4a3b-93ae-d0e5c849716b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:25:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c0e00fbd-8c73-411e-b68c-e68ae2560703","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-19 23:30:00"}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2ad35d46-cbaf-45df-a320-0b96d87c9d62","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:35:00","totalConnections":1}
{"durationMs":3.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8873a975-a65a-4e64-9812-d2f1ccd7883b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:40:00","totalConnections":1}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"65bbb456-c6a3-46f8-8336-a35853212de7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:45:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"141a25e6-4300-46bc-8e5a-adc093b73df5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:46:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:46:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"58ace3a4-6148-463f-8e5d-fc258f149d8b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:20","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-19 23:46:25"}
{"durationMs":35.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"468b701f-dc89-47cf-b957-7f6a0abdd98b","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-19 23:46:25","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":47,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:46:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":399.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:46:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2a26e336-ddff-469f-9740-fe660c5750b6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:25","userId":null}
{"durationMs":706.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"00f93d54-0b3b-47c7-b178-c9ca9311f61c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:44","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:46:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bf8069e1-357a-4d59-8953-1db53f88ac87","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:44","userId":null}
{"durationMs":65.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"8edc249f-a687-452f-928f-549b792282b2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":117.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ea4ad08c-5c6f-43f6-857f-9ff44d95fbcb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":134.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8369ab05-7190-4b79-8f2f-5694e16b56b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":212.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"47296e87-fef0-4b0e-98a9-e6a839946a5c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":275.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"97e0004c-9c9d-4afa-b0bd-23203d0662e3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":366.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"6a0bc288-ee8a-4015-a8ba-0fdc149f232a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":386.49,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"9df1e33f-09f8-4d8b-9a43-88dec95520f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":528.86,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"eac76689-428c-4e6c-9eea-fee31fbce3fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":154.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"e0995fff-aed7-4f5a-9450-3f82b2cc8c4f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":189.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"64fb0e59-995d-4a8d-ae62-fb7e6423fdcd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":140.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"8400e70d-82a7-4c89-bc4c-c35aebba1899","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1051.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":561.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":502.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2b6069be-7e9d-41d6-9377-754e441db56d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":213.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"613f25f0-3a85-482f-ba01-d91bdf1b2a46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":319.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"f0229b30-df27-4a77-b9e0-c9af7c3dbe2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":195.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"3867bb1a-4d42-4143-81f2-133423199cb8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":202.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"4c1251fd-4dcb-4790-b31a-b2c7c7c88b2a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":347.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"8b3dc05f-a630-47f2-8e3b-de5ce18eada8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":326.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"987951a4-55bc-4c7f-9d42-4e7cf925fb3d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":281.73,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"7ae88087-373c-4d08-b68d-cc2362daf309","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":589.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":965.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":825.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":843.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":848.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1205.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":917.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":979.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":830.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":968.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":982.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":984,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":986.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1016.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1018.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1019.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eb55c153-7e45-420c-abf1-a0511b14bd08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":30,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d0701b78-111c-47ef-96e9-770621b6d023","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":86,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"28c1de34-ba33-446d-b365-5d8cf0b6fe26","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"471fca14-c4f9-49c1-a7f6-b36033228032","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/settings","navId":"1787172415184-287831","text":"Settings"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/settings","navId":"1787172415184-287831","text":"Settings","to":"/dashboard/settings"},"durationMs":478,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787172415184-287831","to":"/dashboard/settings"},"durationMs":496,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:46:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ba6fcf78-db10-4bff-8434-809bbf5f5c79","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:46:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:47:00"}
{"durationMs":33.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"f0a5f137-1bd6-46e7-ad7d-1972c21a935a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":121.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"e7ebd7bd-f4f5-4e52-8ddc-affc3963c08b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":83.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"5f5f046c-2676-4bbc-bb7c-51908aeb14dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"10d83006-1444-4c3f-b5b0-2f88e0719511","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":132.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"38d970bf-4bde-45a7-9c32-c7ba575a1aeb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":381.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":770.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":781.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":795,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":814.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7a44b789-a455-48bd-9b9d-d87dd3d1e0f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":"radix-:r9:-trigger-contact","label":"Contact","name":null,"type":"button"},"durationMs":33,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/settings/school","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/settings","navId":"1787172428038-737316","text":"Back to Settings"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/settings/school","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings/school","href":"/dashboard/settings","navId":"1787172428038-737316","text":"Back to Settings","to":"/dashboard/settings"},"durationMs":94,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings/school","navId":"1787172428038-737316","to":"/dashboard/settings"},"durationMs":113,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6ffec304-ac21-4cca-9ce1-783e29654ce1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"cf922899-54d1-4c16-8b13-f3b0097c1549","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-19 23:47:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/settings/payment-gateway","navId":"1787172430509-10993","text":"Payment Gateway"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings","href":"/dashboard/settings/payment-gateway","navId":"1787172430509-10993","text":"Payment Gateway","to":"/dashboard/settings/payment-gateway"},"durationMs":440,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/settings/payment-gateway","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings","navId":"1787172430509-10993","to":"/dashboard/settings/payment-gateway"},"durationMs":484,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/settings/payment-gateway","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b1c34301-d2e4-4351-8f01-f45ff3c6d7ac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":377,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89900cae-6b1e-4ad1-bbfb-2850162cee1a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":45,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/settings/payment-gateway","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"49c88427-b599-40a5-82c4-f3feee793b46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings/payment-gateway","href":null,"navId":null,"text":null,"to":"/dashboard/settings"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings/payment-gateway","navId":null,"to":"/dashboard/settings"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/settings","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f263331-63fb-4d35-9e36-84ff248f0f14","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:27","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"facf0436-4b19-473a-8974-2881edb5f43b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:28","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings","href":null,"navId":null,"text":null,"to":"/dashboard/settings/school"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/settings/school","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/settings","navId":null,"to":"/dashboard/settings/school"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/settings/school","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":386.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-19 23:47:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"816e15d9-e0f2-4d70-a566-c565ed7b067c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:47:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":2.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/public/plans","requestId":"17615a4e-23c3-4909-b63d-2330e5f130c9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:47:44","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:48:00"}
{"durationMs":2.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"73a48562-7986-49d0-912f-be8a26c2f720","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:48:09","userId":null}
{"durationMs":2.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/auth/google?frontend=https%3A%2F%2Fqonnectwifi.elpa.co.ke","requestId":"e219000c-ba40-48ee-9fcc-a9c8cd2ac984","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:48:10","userId":null}
{"durationMs":2.48,"ip":"197.136.9.4","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/auth/google?frontend=https%3A%2F%2Fqonnectwifi.elpa.co.ke","requestId":"a08456ae-7107-4be5-88f6-063925f82050","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:48:17","userId":null}
{"durationMs":2.37,"ip":"197.136.9.4","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19b80cb3-e684-488a-b824-50c0713b90be","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:48:17","userId":null}
{"durationMs":2.63,"ip":"197.136.9.4","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/auth/google?frontend=https%3A%2F%2Fqonnectwifi.elpa.co.ke","requestId":"2845218b-1524-4bdc-bfba-0435e288f20e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:48:19","userId":null}
{"data":{"id":null,"label":"Return to Sign In","name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:48:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:48:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:48:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89b4f5aa-28ea-4eed-b7f1-0196d276ec22","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:48:28","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":29,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:48:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cce203fe-8249-4525-bc8d-ee015ec432ca","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:48:29","userId":null}
{"data":{"id":null,"label":"Green","name":null,"type":null},"durationMs":37,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-19 23:48:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f3a7364e-92aa-4516-87f4-edc3a79f07d2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-19 23:48:30","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:50:00","totalConnections":1}
{"durationMs":2.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"15ecd864-d63d-498f-b313-42cc03bc4257","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-19 23:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-19 23:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-19 23:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-19 23:55:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b688eec9-d177-476c-bdcc-42ef536f4d60","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-19 23:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-19 23:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 00:00:00"}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a0bbac12-d640-49df-b256-b4b1bffa5c3f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:05:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"15906990-b7d8-419f-a9d9-09ea7adc565c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:10:00","totalConnections":1}
{"durationMs":2.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6bb8ff2c-9981-434b-92d0-f10f9a690507","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:15:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4bfb28a2-fc1f-40db-af32-3a266a49b9ea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:20:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a0078cb6-762b-44d2-805a-b474dcb60f3d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:25:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43d4d78a-c486-48b2-a30b-db099804537d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:30:00","totalConnections":1}
{"durationMs":2.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96cdc58e-51f8-4d72-900b-250e31bfae61","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:35:00","totalConnections":1}
{"durationMs":1.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f19bc0b9-de87-4f37-a02e-3d3fb90e32cc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:40:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ed10c99b-f90f-41ed-8e36-f82d3bafc619","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:45:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"58bd99bd-4501-49aa-aa89-9af3b938694a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:50:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4c3a114b-d031-4219-941c-f77c56cbe8a6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 00:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 00:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 00:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 00:55:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"072cbb47-d639-4475-a288-6c2410bd8ff6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 00:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 00:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 01:00:00"}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bd3da8b0-b452-47d5-a3c1-6daec9f3ce70","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:05:00","totalConnections":1}
{"durationMs":4.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ef4a04fc-5c0b-4393-a7ad-8b150361f989","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:10:00","totalConnections":1}
{"durationMs":2.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2abf82d5-7d49-48bf-9eb6-b3ef7ebd5ba4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:15:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"41ac8fd7-504f-4b21-b113-efaec90fe1c2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:20:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6df2408a-c85c-42a5-b88b-fe4251d9835a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:25:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dcb4b3c3-13d4-45d7-9dd7-ec149d0c8c96","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 01:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:30:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:30:01","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 01:30:01"}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dc85a848-f940-408f-906a-cd3ffbda600e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:35:00","totalConnections":1}
{"durationMs":2.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5f6e08aa-6023-4b8c-aedc-de1e89816d2c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:40:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3a04225a-8729-498b-9072-52b5d26929d6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:45:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fbeb61a1-eba4-42b2-a0c2-c4b41716b7aa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:49:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:50:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b6d7c655-8501-4ebe-a287-0248c5dc2d1e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 01:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 01:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 01:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 01:55:00","totalConnections":1}
{"durationMs":2.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6f6d7617-96bd-4b3d-9b42-c8889de18797","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 01:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 01:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 02:00:00"}
{"durationMs":2.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fd41d192-7f44-46e9-b7df-db10b9629cb9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:05:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79e0c0f1-d089-439e-a805-d6abebf703ff","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:10:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"87dd69e5-e784-4db7-a41b-b6d11665ce39","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:15:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a42d0ca-eb8e-4845-a7a0-d49e2ce66a78","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:20:00","totalConnections":1}
{"durationMs":2.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a849d6c-8e96-4e76-90cb-d38a2ab56acc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:25:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"30887d9a-91dc-47b1-8c6f-2b89531cc22e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 02:30:00"}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"241c8327-b66d-4393-b892-def47c0fe780","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:35:00","totalConnections":1}
{"durationMs":3.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7e1884ba-f2ec-43d7-a6c0-25a6ec59f622","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:40:00","totalConnections":1}
{"durationMs":2.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"39a17a73-20cf-4a49-8183-9cf3dfd60691","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:45:00","totalConnections":1}
{"durationMs":2.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f9caffd4-faaf-42ac-a0dd-8e8947fece10","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:50:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fdcfc485-5926-4913-8696-8a56bf8ab279","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 02:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 02:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 02:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 02:55:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c425a1b3-4fdc-42ed-8154-637bd743d0ee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 02:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 02:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 03:00:00"}
{"durationMs":3.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6c3e148d-045a-45f8-9e08-474230ce2e5d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:05:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4cdd19e-866b-42ea-86d1-e618dbd37158","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:10:00","totalConnections":1}
{"durationMs":2.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fae0dec0-b779-40d1-a7c1-78b1a81bcd4b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:15:00","totalConnections":1}
{"durationMs":3.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5942f287-d121-4b40-ade0-aa8786cdb557","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:20:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2cc717ee-1360-4a40-b046-68a78771cf54","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:25:00","totalConnections":1}
{"durationMs":1.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e7ddb9e0-5323-4bc7-be09-5383138c19ee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 03:30:00"}
{"durationMs":2.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7693f119-08b4-44a1-8635-687064cdbfc5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:35:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3566dc3-e5de-476a-ac97-2d13d8ce72f5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:40:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ba570968-e85d-4a9b-af0a-e091e1f69bd1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:45:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eee19599-ed1f-4647-a7b2-04d3f51a82b7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:50:00","totalConnections":1}
{"durationMs":2.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8ecaa92b-0b0a-4cc1-9215-5cb40c5659c7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 03:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 03:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 03:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 03:55:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"005b2688-0511-4b0b-beb1-8b300ce4309a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 03:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 03:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:00:00","totalConnections":1}
{"durationMs":1.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"efcf7028-17e8-4086-9ee2-d37600c07e17","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:05:00","totalConnections":1}
{"durationMs":1.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81bf7ec0-85bf-4bb8-8be2-b7252517b18e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:10:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"af79d61f-8194-48a1-a0f2-4575eb07478e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:15:00","totalConnections":1}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2c328356-e609-47c2-8019-8720597ecb18","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:20:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1bc2f8a5-b3ca-4f81-8166-96d3050dd005","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:25:00","totalConnections":1}
{"durationMs":2.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"31ac44ac-6a7d-4474-a7ba-1aebb010a6ce","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 04:30:00"}
{"durationMs":1.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4c857226-f69c-4b4a-9da1-71b5310676f3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:35:00","totalConnections":1}
{"durationMs":2.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0038ebd4-1046-4f15-af8a-1e9fdabd7c4e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:36:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:40:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"95d9a5a9-52e1-49a3-b1c2-244e73aa18ba","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:45:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a130ebcf-29a9-40ea-84bc-54ab484db63c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:50:00","totalConnections":1}
{"durationMs":3.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9d7ebb50-eeaa-4f1e-8109-be8c5a10ab2a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 04:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 04:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 04:55:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 04:55:01","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ee12e5a2-2d32-40b1-90cf-b94025182c54","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 04:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 04:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 05:00:00"}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"36fd6e8d-7660-4e4a-a8f4-4983a8a9be07","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:05:00","totalConnections":1}
{"durationMs":3.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"52f7330f-3cf9-4414-8aec-f2f602990c10","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:10:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"35488185-bbcf-4be7-936e-60ba8f82a9e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:15:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e1f9de6b-a52c-4b1d-a696-1105d2b36977","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:20:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f58cf9b6-4c05-4263-9656-ba9881d6c45c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:25:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"430624f5-08ce-483f-94ed-6127d60a9735","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 05:30:00"}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a7d6c8ad-dd93-4e53-9544-1fc9dbd6b570","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:35:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e0f95651-0995-4ba8-bdad-b4583469a9e6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:40:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fae72870-2c84-45a3-a484-253a5f364c85","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:45:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c29c5a48-6387-4308-ae37-a1cdb833a288","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:50:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2e788d1e-2d74-4b81-9bed-eb028db732b7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 05:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 05:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 05:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 05:55:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b963ba23-6d3d-46a7-857c-c8e54564eebd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 05:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 05:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:00:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2ca1f760-42e2-4e07-a7cd-63fb09637206","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:05:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"556f48a1-2419-4b2c-b954-e94a9e0d7bfe","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:10:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"951b5826-fa1f-4a71-9edc-6054e5a684f3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:15:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7668709e-c1fb-406f-a991-a3a17ec15022","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:20:00","totalConnections":1}
{"durationMs":2.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"14fc956f-9ea3-4bde-ae5f-1de232967700","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:25:00","totalConnections":1}
{"durationMs":3.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8203f7b8-e9c5-428b-81af-d2e871bab902","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 06:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:30:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:30:01","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 06:30:01"}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60ab4464-e202-49b0-adbb-aaebd75b315b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:35:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f68bd71b-16fc-4df8-a625-d2a1f103e29c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:40:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d40db232-11b0-4744-90db-34075975b9c1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:45:00","totalConnections":1}
{"durationMs":3.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8f2a8972-4c9d-4ae5-80d7-b310a13507f9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:50:00","totalConnections":1}
{"durationMs":1.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"911428c3-41f7-40b7-8bca-8fb908f0462f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 06:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 06:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 06:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 06:55:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4bf0825-7d1e-4550-86db-385a142d8cbf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 06:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 06:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 07:00:00"}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"95540a9c-0c46-493f-8562-1418c66fa695","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:00:03","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:05:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6d24c2f0-4839-4ab9-88bf-503edd6ce0f3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:10:00","totalConnections":1}
{"durationMs":2.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"58130dc2-dc2e-4323-b07b-fc991e34ac96","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:15:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b1f8fdf-5002-4c39-983a-8d9ec3cc91ea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:20:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d7ae385-5812-4f17-87ca-82eb8073642f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:25:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"94a0499a-9fa5-4c2d-b861-20c375ef4f89","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:30:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bcc1ee6f-ee88-4ef4-bedd-e701fead693f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:35:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ee8eb033-1955-40ab-bba0-9bb9fda2f762","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:40:00","totalConnections":1}
{"durationMs":2.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"417e3a0e-a69c-4ab3-a549-4b44b5e74674","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:45:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f77ed067-a221-43e9-98ae-16c8303cf019","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:50:00","totalConnections":1}
{"durationMs":2.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f439747d-ad66-49e6-9ea9-751f852099a9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 07:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 07:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 07:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 07:55:00","totalConnections":1}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43d0a50b-6f73-4168-bcd7-ea0986842db5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 07:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 07:59:00"}
{"level":"info","message":"[CRON] Library overdue check started","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"error","message":"[CRON] Library overdue check failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/library-overdue.job.js:14:56)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:00:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a794ba8-f902-4a0f-9dff-930c78a0198e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:05:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cc233ec3-a7b5-4115-ab97-9f2dcdb8ee20","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:10:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"abe259f6-c177-4a74-a042-f2f6fdb3b60c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:15:00","totalConnections":1}
{"durationMs":1.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5bd55f6d-d813-4d3c-864a-e80105645595","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:20:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4b630d9f-9d45-4b04-b1de-8eb90d5e18c5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:25:00","totalConnections":1}
{"durationMs":5.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eb661fd9-fd5b-47f7-a9ce-2b79dab99241","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:30:00","totalConnections":1}
{"durationMs":3.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"572888d5-6efd-446d-a7ea-bfb040288b52","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:35:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"77a1a75f-d7c7-495b-8336-2aeb10b8ee3e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:40:00","totalConnections":1}
{"durationMs":1.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"56594154-5803-429d-9aa0-a9a85b1df7de","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:45:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f0e188a3-7d58-468e-9e0a-84bc0525e3ee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:50:00","totalConnections":1}
{"durationMs":2.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"94cd8dfd-f952-4a17-b75f-1a5c79a6eb7e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 08:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 08:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 08:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 08:55:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f0190aef-b003-41b6-aa04-36a6e48e5f04","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 08:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 08:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:00:00","totalConnections":1}
{"durationMs":2.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"93e7a34e-f116-4e34-a73d-c75439b67d11","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:05:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e99f1b76-07c3-46e6-90df-353b45851187","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:10:00","totalConnections":1}
{"durationMs":2.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3eedf77f-a779-49ee-92c1-fec25c279e84","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:15:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3e9a491c-898d-49e7-8c67-dddf1e147203","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:20:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2485012e-42e2-4e05-aea0-cfd46d782708","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:25:00","totalConnections":1}
{"durationMs":4.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"90151e69-0335-48d4-9e72-76817e424283","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:29:00"}
{"level":"info","message":"[CRON] Attendance alert started","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"error","message":"[CRON] Attendance alert failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/attendance-alert.job.js:19:53)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:30:00","totalConnections":1}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0b6f4a78-5d1c-45b4-81c6-be052d5cd1de","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:35:00","totalConnections":1}
{"durationMs":2.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"10a5c464-ff8c-4f10-a834-8395b1b1f1dc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:40:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"51ce92b2-66d7-45f6-a18a-40d3ef2bb7fa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:45:00","totalConnections":1}
{"durationMs":3.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b0f080b3-2f1c-4024-9bdc-9745bc5ce01c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:50:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"daf8da8d-1540-4cd4-b26d-158cee7663d6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 09:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 09:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 09:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 09:55:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"04bb86c1-ff89-4c57-b505-154ca08217a3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 09:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 09:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:00:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9305ffb3-57f5-4007-836b-ed4e4216cc8e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:05:00","totalConnections":1}
{"durationMs":1.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be9679f3-e492-4725-9098-dd851ab5c2c0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:10:00","totalConnections":1}
{"durationMs":3.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8f553884-8b00-4651-be76-4fb544480566","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:15:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"75d0d364-a1ef-46ca-b434-118e9ee024bc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:20:00","totalConnections":1}
{"durationMs":4.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"674cff54-28ef-479e-8fd0-359f3c61c349","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:25:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4581b717-1168-4c66-9cf6-3ca766469a3d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:30:00","totalConnections":1}
{"durationMs":2.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be2b7268-6406-4d26-9df3-693189f20606","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:35:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c08c47f5-a947-41b6-aded-2281584ea9ed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:40:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a9e0a619-fe52-465d-890f-68175e0be014","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:45:00","totalConnections":1}
{"durationMs":2.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"51e7ebc9-93cd-4025-9146-7f5dbc210222","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:47:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:50:00","totalConnections":1}
{"durationMs":2.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7756bca3-4520-498e-ba11-264abd789fcb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 10:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 10:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 10:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 10:55:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e11bdc12-1881-40f1-b3c2-c5b7254e75aa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 10:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 10:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 11:00:00"}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"338211f2-1609-493d-8fd5-5a5e0ec7a2c4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:05:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"456d51e3-c744-4d50-aeb8-09216a7411fc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:10:00","totalConnections":1}
{"durationMs":1.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d568d0ef-9686-47b5-ac22-0addd8327ff3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:15:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"00632836-67cb-46be-9511-15cc90c82332","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:20:00","totalConnections":1}
{"durationMs":2.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9b3cfdcc-a3a2-4b36-909f-04d58c4bb62b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:25:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5b445fe7-954c-42ae-8a72-7055e911a069","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:30:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5f6e5b81-3c28-4a4c-a0a8-e255321f72f3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:35:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d12a8a5f-e0da-4871-9895-24321f82c698","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:40:00","totalConnections":1}
{"durationMs":3.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d7e71600-7495-4837-bc84-d2d8325953f2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:45:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5e5f7898-0518-422e-9638-27217bc23201","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:50:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f1884d6c-46cd-4aba-811d-9027b16a3314","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 11:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 11:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 11:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 11:55:00","totalConnections":1}
{"durationMs":2.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5e0852c1-da34-4b2f-b7a3-6a44bbf45167","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 11:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 11:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 12:00:00"}
{"durationMs":3.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f4e617ac-2816-4413-a54e-7772dd9c5552","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:05:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"843efe76-8d57-439e-80fb-8a0ce5bfe07a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:10:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6c90c841-eb4e-495c-86a9-eed6dc34266f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:15:00","totalConnections":1}
{"durationMs":2.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"411aec07-5bb5-491e-9cf6-225c4123ac65","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:20:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a38a65aa-d1da-416c-b54b-e9c28f02055b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:25:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"35693081-a433-48fb-816f-6f1bc14afc0a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 12:30:00"}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"16a5fb2b-3365-4126-b7b5-53c91a6211ff","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:35:00","totalConnections":1}
{"durationMs":2.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57fd2e25-5461-4f23-b63a-dab458d98080","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:40:00","totalConnections":1}
{"durationMs":2.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e6f8adf7-d81f-4328-bdec-c8d1c2371ffe","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:45:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7da234a4-45be-45ce-8819-2bdd7c9c0a2b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:50:00","totalConnections":1}
{"durationMs":1.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1d960d4b-7001-41f2-995d-84eac39495e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 12:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 12:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 12:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 12:55:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"07874097-12b2-490f-bb30-46ee8c45bcf2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 12:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 12:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:00:00","totalConnections":1}
{"durationMs":3.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fb698cd0-60fc-4a55-bc5e-dbea62e2ce7e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:05:00","totalConnections":1}
{"durationMs":3.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1e892b96-fa15-49c0-a2d1-b6977a3512c6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:10:00","totalConnections":1}
{"durationMs":3.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8117b4a1-55ca-43d3-99c6-396eeb150b63","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:15:00","totalConnections":1}
{"durationMs":3.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a243f2a2-da4c-4b2d-bdde-0219948e6570","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:20:00","totalConnections":1}
{"durationMs":2.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68156d9c-6264-499a-a48e-34d1141dd1bf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:25:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f4379e4-468c-478d-a0ba-9080b3046029","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 13:30:00"}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"12ab8da7-b554-41d5-8fc9-649965a79b96","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:35:00","totalConnections":1}
{"durationMs":3.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"71dc7617-fe4c-4a53-9b0d-8accdf943209","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:40:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c2384c01-bd79-473a-93ec-b67afb57a351","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:45:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8be70e20-455d-486a-803c-05db12e3d972","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:50:00","totalConnections":1}
{"durationMs":2.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e7e7e451-8ce4-4c9f-bcce-e116541e08fa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:52:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 13:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 13:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 13:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 13:55:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f7c54e3-94b4-4b26-852b-be1981442d00","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 13:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 13:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:00:00","totalConnections":1}
{"durationMs":2.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f5d5268b-9bb8-4620-a3cd-4ff79dca593b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:05:00","totalConnections":1}
{"durationMs":1.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d2b8290e-2c21-47a4-ab3d-65a4a1f338d3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:10:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b8aad962-8119-4f0f-8ea9-b092080b118f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:15:00","totalConnections":1}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"84e6823d-d5b7-48d0-abdb-589564ae323d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:20:00","totalConnections":1}
{"durationMs":2.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f65dd03e-81f4-45a3-b9c2-3e2051675877","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:25:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c48f6d78-a464-4570-a3cd-00be5b170249","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:30:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6dc56109-47f4-4cd1-81e3-16e57f7fc640","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:35:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c41a9deb-4412-4910-b97a-41cad048deac","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:36:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:40:00","totalConnections":1}
{"durationMs":2.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2d8c5935-ad75-439c-87a1-afa468c46095","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:45:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"93903bf4-f525-42cb-aa43-08f50e3f406c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:50:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"23fa989a-78dc-482c-81c1-612b869ed432","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 14:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 14:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 14:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 14:55:00","totalConnections":1}
{"durationMs":2.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"023e84ce-d97c-4053-a075-96e818b26a28","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 14:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 14:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 15:00:00"}
{"durationMs":2.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7a55ba51-f9bb-459d-81b0-3a49543414fa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:05:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4052e24e-bf00-4681-a2b5-e36d3d40f1a0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:10:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2980215f-907a-466b-a0ea-378074ec895d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:15:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7c0e9169-09d5-4b07-a1bc-e803531ebb30","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:19:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:20:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"84275392-5e57-41c6-9822-c6b191e93f0f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:25:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e1a2d509-147f-46d0-8be0-cbf17702bffc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:30:00","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68aeaff0-6a6d-4af2-9f37-481699994c80","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:35:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bdd239af-6d90-4e9e-94b1-21a6cebda8c2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:40:00","totalConnections":1}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:40:00"}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"71c00570-0c7d-4bc3-8b03-43234bbf855b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:45:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac53729d-aed2-4d09-831a-56d1c4b7126f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:50:00","totalConnections":1}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ae1a93e-9818-47f8-be3b-f6573ff1cd67","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 15:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 15:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 15:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 15:55:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"58c6f760-43df-4f8a-8482-ce0aa093ff31","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 15:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 15:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 16:00:00"}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b6f42564-88f4-4fa3-99ad-197b4ca9d3e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:05:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e8751b14-e12f-4229-8fe3-23d764d12858","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:10:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96dd9920-0702-4307-b0ed-8be5658a6661","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:15:00","totalConnections":1}
{"durationMs":2.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a8cf2243-aa2a-446f-8af8-842747bbaceb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:20:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2a8eb991-2eab-4bd4-9819-4c651aff2390","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:25:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b782b0ab-2696-499f-ac44-ed0a4336f406","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:30:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"78ed818d-49e9-417f-ad96-ab582ee579f1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:35:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a7b4fb0a-1c7d-4e7b-93fd-2d804ae68f48","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:40:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e728c0a5-f8e1-42b4-ac7d-192691c82729","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:45:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2c3dc56e-1e6d-499f-aaa7-21457f03c676","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:50:00","totalConnections":1}
{"durationMs":3.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"adea80d0-bdd5-40e6-8f2e-999a2aa57724","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 16:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 16:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 16:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 16:55:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79fe1692-f859-4a36-85e0-d1168dfd5529","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 16:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 16:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:00:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fdc43225-2aab-439e-a2fe-be2cf76a2009","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:05:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:05:01","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6caf850c-0a42-4f3e-8d3e-65fae6205bec","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:10:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"44ffb325-7d7c-4a5b-82ee-50ddf96c8dee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:15:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7bc8ecb2-4ab0-43c1-a7ae-7706dab5a54f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:20:00","totalConnections":1}
{"durationMs":2.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4cc2b6fa-7745-46fc-9109-2f7e7ed5132b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:25:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c90ca2ea-faa2-400a-abdd-2f192d4720d4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 17:30:00"}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"277d897b-37c1-42b2-9297-92e982a3984b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:35:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24e893d5-6bec-4ae3-9ee3-7a236d024570","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:40:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"47e561d8-c762-4b99-be8e-a760618b2905","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:45:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"35103447-d260-43a5-ade2-5424ef8a1393","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:48:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:50:00","totalConnections":1}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5b3daf77-c6cb-4b32-bed0-f1e82cd7f895","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 17:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 17:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 17:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 17:55:00","totalConnections":1}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f62c6a73-043b-4a0f-b0b0-969cb2f2d16f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 17:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 17:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:00:00","totalConnections":1}
{"durationMs":2.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fa09c5ff-3aec-4151-b11c-5ca6925e7eb7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:05:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3e537a8d-eb82-4309-9cfe-f95b50815718","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:09:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:10:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f1552226-7f7b-40e2-a664-9561f7bc602a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:15:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"138866f2-73fc-4a30-b06a-a80d1b72e061","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:20:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f0d443ed-9147-4392-bc51-3eba55fbd01e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:25:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"daeec458-ed90-4585-8a6c-47466dfb176f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:30:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"93117180-bb17-42c8-85d7-851afee63cf5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:35:00","totalConnections":1}
{"durationMs":2.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"66cf58a6-60fe-40a8-87cc-98d5bf9ab2e3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:40:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b2a8294b-c839-4351-b663-e145070da7d9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:45:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ecc6b39-8238-4d76-b5ce-b1daa3acd1a9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:50:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a3a1b60a-386f-46bd-b495-13e27a23d7d6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 18:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 18:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 18:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 18:55:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"529729ed-5db0-425a-bc78-b925064c32bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 18:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 18:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:00:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1b2c18aa-b202-4d85-8c43-339c5b7bd884","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:05:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"896ec67c-c8c6-43fb-8caf-4c20f862cd8f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:10:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7160651b-37d2-43f0-af9f-c19ae28821a7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:15:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a0e0e006-3b6e-4187-807b-b40770cd9f56","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:20:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f87aaf6-6f8c-4555-9375-87330fae4dc1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:25:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"33cf9fa7-ceb7-4698-9db3-ba071328ac76","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 19:30:00"}
{"durationMs":2.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ef17dbfc-a777-4eaa-9f66-eebb5625b65f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:35:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"90fbfd0e-3d6c-45fe-81b0-3d9f52437eee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:40:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c2f7ff7a-a982-4e96-ab1e-bb10b9efa42a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:45:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac224fe2-07bd-4b18-8fd3-21c0618a0652","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:50:00","totalConnections":1}
{"durationMs":1.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e06359fc-98d2-476b-9a18-6e646206a4eb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 19:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 19:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 19:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 19:55:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"761162e4-fd3f-4d92-9c4e-c05d9a044c2f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 19:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 19:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:00:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dad962c5-a415-408f-a535-f418bd9c5bc9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:05:00","totalConnections":1}
{"durationMs":2.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1b23a07a-eb22-4c54-8d41-8ba4a8f1a7ff","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:10:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"34e31647-b091-4a84-98de-05e98e13a657","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:15:00","totalConnections":1}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a25e49fc-7ec9-47da-be9e-1f3f48a0a3cf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:20:00","totalConnections":1}
{"durationMs":3.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5982133d-360a-4b78-b154-2a00dbccc17a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:25:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8601923a-2769-40f6-8675-f7e9c0de439a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:30:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"403ace13-1f29-41ca-9622-4195f239d1df","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:35:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f6d60e58-d267-4238-9e79-b1e2a6340eaf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:40:00","totalConnections":1}
{"durationMs":1.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3cbdd5e4-404e-4539-8c21-9168d899a12a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:45:00","totalConnections":1}
{"durationMs":2.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c64076cd-f8b1-4979-ab98-22771c4d8e09","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:50:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e5d57f6d-c572-4d6f-bb6e-e8325e42094b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 20:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 20:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 20:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 20:55:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d2fd3597-ba52-4195-a0ce-5b7999d1ea98","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 20:55:02","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:55:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7613dfad-de72-4daa-871b-c63125fc8241","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:15","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":73,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:55:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":null,"url":"/auth/login"},"durationMs":30027.6,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:55:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":11,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:55:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"55ab0b7c-a6d9-4d96-8529-e1f04dbcbcea","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:16","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:55:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.93,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e302a399-8e05-44a2-ac7b-9b1142b1a7c1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:31","userId":null}
{"durationMs":864.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"bcb09aae-b672-4202-b582-e3cfc15e1b1c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:31","userId":null}
{"durationMs":53.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"a35fde0d-d398-4078-b2f5-3fec354957e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":89.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"a849851f-bd5d-406d-a537-a411dc857721","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":90.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"40ebdada-e164-4d6e-a189-dc7f1397cd7c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":75.08,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"4b1fbba6-73bf-455d-908f-4dd1d78d6478","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":130.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"031ae4dd-a54c-4ae1-bb99-87eb137f3e8a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":49.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0bb5d91f-8438-40c4-a50d-3cfb16460594","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:55:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":43.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"4ce96509-9401-49c5-b7d4-27ef06ea9330","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:55:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:56:00"}
{"durationMs":18.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"e6cd638d-3194-4c60-bd2f-d844cadb30c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:56:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":56.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1eb3e0e5-989a-4c9a-8331-f28236c51521","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:56:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":83.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1aca614c-c608-488f-8cd5-b89300296f6d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:56:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":58.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"f71238e4-53eb-4bea-af67-63830525e4be","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:56:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:57:00"}
{"durationMs":57.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"e0161a80-d5ce-4d5a-8cd0-8cf85ec98704","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":56.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"c82b1a0e-f8f9-402e-9ba6-64869802c006","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":44.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"8f74f01d-4f5e-4839-94f7-dfb6e81f44de","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"75582c3c-ade4-406f-940b-9e75930a1d74","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"4a84b4c2-5932-4def-b4fd-4606bbcf1743","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":68.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"566dca8e-0b35-4bd4-992a-49c3925a6d59","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1686,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:57:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:57:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:57:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8040bdcb-3bfe-4fa4-8e0e-7b0320030763","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":81.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"fd0c8967-0795-4b9f-b875-cb1575f7d981","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":2224.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":4588.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":9452.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":12079.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":80,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":18688,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":21518.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":25876,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":39,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":38,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/school/enabled-modules"},"durationMs":30004,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/inbox-count"},"durationMs":30034.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communication/notifications"},"durationMs":30036,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/school/mpesa-config"},"durationMs":30036.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communications/sms/settings"},"durationMs":30037.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communications/whatsapp/status"},"durationMs":30037.9,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/reports/dashboard"},"durationMs":30019.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/grade-levels"},"durationMs":30020.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/school/terms?isCurrent=true"},"durationMs":30021.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/streams"},"durationMs":30023.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/learning-areas"},"durationMs":30024.6,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":48,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":53,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":5.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"199eeeda-e7b9-46a4-8c58-56b55ff37f62","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:49","userId":null}
{"data":{"id":null,"label":"Rose","name":null,"type":null},"durationMs":69,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":81,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"href":"/dashboard/guardians","navId":"1787248579606-676658","text":"Guardians"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":84,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":32,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/inbox-count"},"durationMs":30004.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/communication/notifications"},"durationMs":30003.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/reports/dashboard"},"durationMs":30002.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/grade-levels"},"durationMs":30002.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/school/terms?isCurrent=true"},"durationMs":30001.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/streams"},"durationMs":30001.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":null,"url":"/academics/learning-areas"},"durationMs":30001.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":162,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","href":"/dashboard/guardians","navId":"1787248579606-676658","text":"Guardians","to":"/login"},"durationMs":76822,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":"1787248579606-676658","to":"/login"},"durationMs":76822,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":"1787248579606-676658","to":"/login"},"durationMs":76843,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":13279.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":13595.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":14580,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":16798.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":17121.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":17126.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":18163.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":6.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"de98ebe5-80d2-4295-af54-c4de6ed9385d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:51","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.91,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71f39472-1cfc-458f-bfbb-6507f7a48220","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:56","userId":null}
{"level":"error","message":"Error: Invalid username or password\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:426:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-20 20:57:56"}
{"durationMs":1130.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"730b26a3-1358-461c-9279-70376d3baa2a","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-20 20:57:56","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":2504,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:57:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"95ce075e-d2df-46b3-b347-84efa1f05184","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:57:58","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:58:00"}
{"durationMs":736.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"a62f8c38-092d-44a8-aaba-e110a714f511","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:03","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-20 20:58:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"78503a6f-990e-4b69-8039-415376be35ca","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:03","userId":null}
{"durationMs":28.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"960b4431-9b4f-424c-966a-87e9eabde16c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"2db6fbab-139d-4f20-a730-ecbd7682bf82","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":44.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"746f5cb0-b83b-41bc-bc99-82cfceda8b37","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"66021161-283b-4442-8ec8-fa5997049619","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"3fc85e22-6415-4559-8ee5-03cef1af5674","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":2367.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.11,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c6f5cb80-d025-4c6d-b547-3d295515be0e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"5c3b5534-397c-4e72-914b-0727b2197267","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":23.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"9a4cb5c8-7ea4-4a0a-a663-fc7bb5ba0bfb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"60796315-82af-4b94-bc1e-6405e651a830","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"daa54653-75e2-4da5-9e4f-0f4b5ddc59f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"e59898ae-43d6-4c9a-ba5a-e55eecd73168","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":2987.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":5608.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":7756.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":8574.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":11861.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"453cb5c5-8518-4f44-be11-f67d9cf971ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":289.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"ceeb42ce-eb0a-483f-b5d4-d32e356b7d92","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.35,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"faf36298-940f-46af-87ed-cb1dd3e24a0c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"996b7159-070b-44f9-b2d6-12e908fec5e3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"d00b2bcd-eb18-47f8-80f9-db803a9002b2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":27.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"4fa1208e-e28f-4bc0-b149-d189055c7e2e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":68.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"ec4aaa23-1816-4673-8eb2-4dda5ef47238","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":13229.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":14578.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":17118.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":17844.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":9311,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":12829.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"157ee209-5c87-4b30-967c-5fd115927adf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":5481.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":8197.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":11820.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":13316.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":16021.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0cee3dfd-5e10-4a4d-8090-68cb83f7bd80","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248717817-433948","text":"Fees"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.91,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"64332369-8ddb-45a0-a0b2-c0e7848d084d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248717817-433948","text":"Fees","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1544,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787248717817-433948","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1544,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787248717817-433948","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1569,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"611a5b78-0768-472e-a57a-18dc968346f0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":101.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"229857b9-c5e3-4dcb-8656-da2e712301ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"9ecfdd6b-a6f1-41ef-9929-80ff5b69f21e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:48","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results","requestId":"4de9c016-9cc4-40fa-97b5-ff3dde818c68","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":65.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades","requestId":"4f28985d-fe3c-4518-89df-a10c82e5645c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787248721994-856026","text":"Results"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":3597.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787248721994-856026","text":"Results","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":1223,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248721994-856026","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":1223,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248721994-856026","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":1250,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.82,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"11a4d989-d4e6-4ffa-9d20-f5e669a6865b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":63.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"774d1c1c-a82c-4b9b-bfcc-b351e1d60c42","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:58:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248723979-765791","text":"Fees"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248723979-765791","text":"Fees","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":61,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787248723979-765791","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":96,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":2382.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,484.00","name":null,"type":null},"durationMs":42,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":3327.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades"},"durationMs":4624.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"09c03a75-8f58-4bfd-946b-c6d7cc6747ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":6651.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:58:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7c4429b5-c9f9-4445-9fc7-a9fb3643d2d6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:58:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 20:59:00"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2dad9a5f-5213-49aa-931e-323bf369b5b3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":"none","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21484,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-20 20:59:00"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-20 20:59:00"}
{"checkoutRequestId":"ws_CO_20082026205859042706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"ee44fbd4-e049-4ffa-bb27-c2167bf7cffc","service":"cbc-sms","timestamp":"2026-08-20 20:59:02"}
{"durationMs":1935.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"c3f6a5f8-db84-4fa9-b536-e8885a28f410","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":3433.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.86,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86be4845-b6ae-42f7-992f-bc18e74b2207","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.73,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"97bf6717-a6da-43e5-a8df-f630291992bb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":1670.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8f678898-88cc-4d48-8284-fd747dedb294","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"593131dd-df01-406b-859f-85790f8c6201","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":2041,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1f1b6433-f490-499f-8b3f-9c9a9a3be9df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"7ae33838-4beb-4014-95f9-eedcdd393a5f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":1.84,"ip":"196.201.214.200","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"fe18ae03-8f2a-4d64-9e1f-725b66840204","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-20 20:59:13","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":1744.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"620a3e48-b872-452f-940b-14fbbdd6fdcd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"d519f492-37b6-4ffd-a9cd-060b08d2bf92","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":4218.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"498d374b-c8fd-4cde-b575-46f1471714b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":71.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"0959be32-4467-4cef-87a8-8e0b40bc124c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"ec582c03-4a8e-4445-91c9-1d70e67dc81d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":16409.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"03daca3a-dade-411b-98c3-ecc544cdfc96","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":61.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"0524ae23-abb7-45d8-818a-1d970d41ea82","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"6ababd95-c8ab-4865-b463-b6997750ffe0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":17766.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4d5a0176-e6ce-4995-9b9c-a3f56854c186","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"4fc234cb-fee4-4911-b002-64e65561384a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 20:59:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"4f6486d4-0e87-4a97-9d58-58a6b1ee8a3c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"9f5b75ab-d0c1-4f94-8dc3-b21306bf4908","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30004.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30008.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30004.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30010.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":24645.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":22672.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 20:59:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"45159c31-7965-4877-b2ab-9b9abe71d72c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 20:59:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:00:00","totalConnections":1}
{"durationMs":38.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"d22f919b-d696-4c1f-9abe-df2040806cd6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":1.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"59b32e36-fab3-49ec-921b-d66bac33d113","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:00:02","userId":null}
{"durationMs":101.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"4c74c8df-3bf9-44c3-b5f6-29746b134be3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"5857eea0-f5b8-4135-8cf9-dc45ab71c531","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"b0e3968e-a0a3-464d-b2bb-51b3683b8781","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30005.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30016.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30004,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30003.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"06d63739-2994-4a70-978d-97197a2d4d41","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":32.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"bddddfdc-15c0-45c7-a4ba-390a5cdbf61e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.9,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"44255091-f126-462b-8299-7f83da710e4b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":76.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"ea04fc15-7f2c-4c72-9bc5-0a7292ed03f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238","requestId":"54bcd1e6-1f6b-4dee-8e36-2e188771c001","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:00:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"62440207-c265-49cf-b933-e8a96970c46b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30012.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30020.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30002.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":22,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_20082026205859042706576238"},"durationMs":30001.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":22,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9143aa53-180e-4730-82b1-4fab54786c58","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:00:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":25.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"502c8379-33ad-46ba-a66a-1843faa042a0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:00:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.49,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"0bf4208b-3a21-4ac4-a4b4-e170a2380b49","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:00:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":89.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"bb487a68-792d-4e83-8bfe-4ae9d4692fab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:00:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"d363a20c-bdf4-4843-a412-f8b5c6a0880d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:01:00"}
{"durationMs":21.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"7b9c8368-8df4-4f36-8474-5211d0df1374","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"95dcf14e-a715-4110-9c74-33db0ab6ac33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":24.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"eaddf0f1-cd57-4915-aa64-294ec655a365","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"042fab91-4d40-4456-a99e-0b6a422ab5bc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":473.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cf40f73b-c66b-4710-bb22-4124d95ea04d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:01:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":130.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"6aca9d94-53f4-434c-9c3a-be73796e0f47","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.49,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"c363527f-f7f1-4584-a989-09b1745f2c31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":1558.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":2667.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2994.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":3627.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":4863.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":5277,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ab746ede-6a00-46da-a64d-2fd9a4890cb1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:01:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":1193.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ca5c72a2-a2fa-457c-959d-2add1c4f0625","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:01:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":114,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.86,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"81484fa5-5413-48de-9914-684fea279b3e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:01:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":69.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"339f0b34-8f22-4169-8b69-63b502e0d839","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:01:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:02:00"}
{"durationMs":79.76,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results","requestId":"f6191e4a-1bf3-48df-9c92-f62b115e12dd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:02:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":75.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades","requestId":"3fec7ebe-1c98-4edd-989d-21355cdca15e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:02:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"ad04dd4a-0d41-4a35-a887-1b8a5ee23cce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"b24f942e-1f60-4d22-904b-951bd2c0001d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":84.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results","requestId":"0487db55-ef0d-41f1-b1da-2000dead95c0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.53,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades","requestId":"bc83c08f-faba-494b-9267-5d12e9b75664","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":58.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"085bbfa9-362f-4377-a9ff-dd81e475eed0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-20 21:02:47","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":76.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"dee565db-b288-4dbc-b14c-9c50dc7de934","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787248921819-809900","text":"Results"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:02:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787248921819-809900","text":"Results","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":89,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:02:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787248921819-809900","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":122,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:02:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6df856d1-fb09-408d-8356-825aa5abeb01","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":78.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"2a6656b6-c652-4aad-8e54-c378a0a110ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:02:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:03:00"}
{"durationMs":44.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"c398692b-24fd-4b9b-b95d-601224af550d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"6a7c969c-9435-47c1-a510-267ad1fde18b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"1750052a-0f59-4e1f-990a-ff1086dc7f25","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"18a3ed77-edda-4780-909b-93269d3b66cd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":262.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"888c5bc0-d266-4353-9ad8-18cb8b0cf211","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"50bc90fa-a157-4325-8a5b-f6b696ce3eb0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":19.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"a373efca-78bb-469b-9832-a73857be726e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ba56527a-28be-4fd5-84c2-668381376a2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"deb273ef-f9bb-4bae-9878-61b109f28b86","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"74cbd2d8-c45c-44ed-b188-f8469735ec67","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:03:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:05:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"17146596-0a66-4b36-b0b4-fc9f1897eb3b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:05:02","userId":null}
{"durationMs":74.08,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"1646dd5f-f954-48c6-b1c2-eeaf6a1548a6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:05:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d8689fa5-268d-4ad0-8342-f60d52165045","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:05:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":22.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"304eeae6-3057-486e-84cb-a87c5a96d326","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:05:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":96.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"2e198a3a-b7c4-460b-9f0b-7e944dacd5e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:05:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":65.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"74954832-065f-405f-9a77-79e5495606eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:05:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:06:00"}
{"data":{"href":"/guardian/notifications","navId":"1787249135057-472970","text":"Alerts"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian","navId":"1787249135857-881695","text":"Home"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","href":"/guardian","navId":"1787249135857-881695","text":"Home","to":"/guardian"},"durationMs":117,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787249135857-881695","to":"/guardian"},"durationMs":142,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249137758-771926","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249140749-858268","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249142129-158554","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249142496-409081","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249143372-258602","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249143561-666685","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249144049-101132","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249146269-589322","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/profile","navId":"1787249146658-172097","text":"Profile"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/notifications","navId":"1787249147069-683137","text":"Alerts"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/notifications","navId":"1787249147677-111496","text":"Alerts"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/notifications","navId":"1787249148296-32114","text":"Alerts"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/notifications","navId":"1787249148553-643847","text":"Alerts"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":57,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/notifications","navId":"1787249152453-520335","text":"Notifications"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":78,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":46,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/dashboard"},"durationMs":25405.9,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/school-info"},"durationMs":25408.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/school/enabled-modules"},"durationMs":25281.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6c4fa69d-c80c-4530-9ae4-b3bf8268e142","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:06:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/inbox-count"},"durationMs":25286.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/unread-count"},"durationMs":25288.6,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications"},"durationMs":25290,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":25291.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":23741.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades"},"durationMs":23742.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":null,"url":"/guardian/notifications"},"durationMs":21861.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-20 21:06:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ff649d0f-0552-4fff-9abe-f375e3c1d5d5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-20 21:06:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:10:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"78ab2fac-8922-4b75-89a9-4bf3d7b9a8be","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:15:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"70993d89-ce64-4c97-81b0-42c8bbe58705","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:20:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a7c8536e-c61d-4912-8687-cf66b083ecb5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:25:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6696842c-33e9-48a8-81d9-9131e009b3cc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 1 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:30:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8e359b6c-4c10-4a2b-87d6-a45e74342d5a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:35:00","totalConnections":1}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cb281138-1409-49d0-aa9e-405d2f14d001","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:40:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"89634eb1-7333-4797-babb-34b21a51d199","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:45:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"91c5bd22-76f4-4db9-9f1a-2347596b847e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:50:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a8bbf7e0-4ce6-4adf-a1e0-8d9162a708b1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 21:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 21:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 21:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 21:55:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81847123-6562-4f82-b09d-95d3dce48e5e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 21:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 21:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:00:00","totalConnections":1}
{"durationMs":2.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"962cabf3-e44d-49c9-ada9-22c9b2b89b96","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:05:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b9764746-33c1-4aec-ac4a-9d0c0210d182","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:10:00","totalConnections":1}
{"durationMs":4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"35c9605c-e666-4e5b-8460-917d4a082070","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:15:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e193589-e055-4792-be52-8db5e597a5d1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:20:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8851e690-4651-4674-b0de-30aa3768d8f1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:25:00","totalConnections":1}
{"durationMs":3.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3068725d-7bf7-4ff1-8926-1d71ee9aa61a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 22:30:00"}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"582a7d73-0ca4-41df-b90e-091b0a1fb7dc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:35:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d7ca6af1-16c1-465b-81ec-7edbdc7bce70","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:40:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ec34300-8182-4838-b357-9864ce597dda","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:45:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"82b825fc-aeec-429a-a5f3-9289e2a929ae","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:50:00","totalConnections":1}
{"durationMs":3.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"352c2a51-1438-4001-a5fe-4cea9e2d178f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 22:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 22:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 22:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 22:55:00","totalConnections":1}
{"durationMs":1.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4d399ab-ed9e-4425-9bae-d7ccc57f8c2e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 22:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 22:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:00:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4d7ab76b-fad3-4937-b5ce-7945cf534bab","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:05:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0f911207-9e50-4955-b8bb-85c64c5741f7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:10:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1dcd840f-7f39-4d03-b837-2ffc68ae70d1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:15:00","totalConnections":1}
{"durationMs":2.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8f59c78e-a072-4ce7-91e6-f3cae1f86aed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:20:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"46b85fe2-c59b-4d2e-b2a4-f0422a476d62","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:25:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4dc2074e-621a-470d-b8b5-28196a2c5ecb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-20 23:30:00"}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b52a3cd2-b517-4f4c-a114-62328dc6a1c7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:35:00","totalConnections":1}
{"durationMs":3.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e1005608-ae25-494f-821b-f5e0f327d200","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:40:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2ba24478-d51a-4cf2-9dd5-0affa0b388b0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:45:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ce857f0-e5fe-4b28-a6cd-585737e6a12d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:50:00","totalConnections":1}
{"durationMs":2.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"20c555c1-a10e-4163-8699-1089dd629aa1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-20 23:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-20 23:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-20 23:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-20 23:55:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b52cd559-90a5-43fd-9c6c-551af8d04797","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-20 23:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-20 23:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 00:00:00"}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c67032e8-2e8b-4fa6-80fc-b9fd1b787f6d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:05:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"074ad481-d8f2-4ad2-bf96-9b692c032ed3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:10:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3100e8f9-68dc-4046-8418-334a752ad778","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:15:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"48615622-e67d-4b95-80a7-86d00217bc6c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:20:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68558473-3b0d-4403-8f25-b28c075e5fae","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:25:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"03fad691-efd6-49e3-88fa-b5cb3ae3cb70","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:30:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24da803d-cf42-4663-b0e1-8b9871666539","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:35:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a26ecdf-e395-40f1-a072-318e1e5e7c1d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:40:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e17a7547-c407-4b4c-ad50-c286164fa4c5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:45:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"700fd2a1-fed7-45b4-bc3d-bf47734179c8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:50:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9f54dd42-9957-47ec-b7a9-a94173cd1f9a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 00:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 00:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 00:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 00:55:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a7c0fa06-0ffd-4891-876f-839b2c646b95","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 00:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 00:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:00:00","totalConnections":1}
{"durationMs":3.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"643b4956-9162-4f8b-900f-2ce227c92af9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:05:00","totalConnections":1}
{"durationMs":2.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ec945b9-d6eb-46b8-8759-103cf411d4ae","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:10:00","totalConnections":1}
{"durationMs":3.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"70c34414-5b6b-476b-8d77-4a1289007327","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:15:00","totalConnections":1}
{"durationMs":2.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60ad821c-2b25-4aa2-a944-42e64e23b67a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:20:00","totalConnections":1}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"74cb15e0-095a-415d-af5d-13ad49546a46","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:25:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"932cdfa2-e05f-49af-88a3-66cec0e87357","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 01:30:00"}
{"durationMs":2.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f99d23b-9b94-44a1-b32a-e2ea03369e89","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:35:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"80284d31-a7e6-4fc1-8b4a-b6ac48d8dc0b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:40:00","totalConnections":1}
{"durationMs":2.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"66f4524c-4b38-4adf-9a62-a8c2a5afe089","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:45:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d316aa1-79e8-4d94-b2d4-9e05a15fe5c0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:50:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0abfede4-468c-4a4a-9404-1ce1e521c899","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 01:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 01:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 01:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 01:55:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c525d9a5-e551-4141-bc57-b1b39a7bfb3c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 01:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 01:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:00:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"953a34a2-3101-4385-b33f-7ee68365f1e2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:05:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0c2a7f11-e3ee-407e-9ae4-a68ba99043b6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:10:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e92af2f1-0385-473a-bc1c-55d98dfd1b74","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:15:00","totalConnections":1}
{"durationMs":3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bd818990-fc49-4bb3-9675-d77598a1c375","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:20:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"469af716-e80b-4072-8aff-a57b94470df0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:25:00","totalConnections":1}
{"durationMs":4.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8af642ae-303b-445d-a115-ccf9225ad3ce","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:30:00","totalConnections":1}
{"durationMs":2.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cb72da0e-eaca-42f3-8ade-b969fe8ec130","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:35:00","totalConnections":1}
{"durationMs":2.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6eaf0f2b-3e13-4c7f-b366-a30f74871b28","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:40:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fb15b41f-08d0-4e0d-ac63-43a79d0022bb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:45:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4f76b343-a0f7-444c-9eb0-eeb13630276a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:50:00","totalConnections":1}
{"durationMs":2.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bbf166db-de96-4082-bb5a-dab57e31572e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 02:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 02:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 02:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 02:55:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d5c9f270-5aa4-45a8-9584-6451b2297e52","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 02:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 02:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:00:00","totalConnections":1}
{"durationMs":3.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"26a55a46-a7a6-477f-bf9b-53f92abfd500","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:05:00","totalConnections":1}
{"durationMs":3.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7800487e-6fa6-4538-b6f8-eb014ffe0d23","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:10:00","totalConnections":1}
{"durationMs":2.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dd50cc3a-5296-4abe-af21-5f00bf9d9f42","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:15:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ec6c878f-e046-48f9-9010-49ed4d5709c2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:20:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"db21e98e-8075-4355-a832-aa9350a88516","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:25:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e148933d-2a75-42e1-b677-b4e914c7b143","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 03:30:00"}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5a96d7f7-9a4a-40c1-af09-22261d190e82","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:35:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"619cd321-b98d-45f5-b14a-031d83e31a5e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:40:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1963e6c0-8b36-4f99-882a-d91942520d56","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:45:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a8a61f19-5987-483c-91e3-a370a71bdfe3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:50:00","totalConnections":1}
{"durationMs":2.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7ab51410-748d-437e-b204-36b807f0577f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 03:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 03:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 03:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 03:55:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d67ee4c6-78e1-4f49-a1dc-cc79e9f1f5cf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 03:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 03:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:00:00","totalConnections":1}
{"durationMs":3.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19278ba5-0b07-4068-b541-9223f8c95444","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:05:00","totalConnections":1}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:05:01"}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"22bf4232-f277-4b61-810b-efbf1175d721","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:10:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f8925ae8-7d4e-490b-8355-09cb86d7ea10","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:15:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79d71a7e-cd5b-4a49-b434-097c0facbf59","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:20:00","totalConnections":1}
{"durationMs":3.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5a65ec8a-6bba-4f59-baf3-8250a63d6af4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:25:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:25:01","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1889489-c344-412f-bf13-b1583412924f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 04:30:00"}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c0b2bcac-09f1-4854-9665-12caa499c951","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:35:00","totalConnections":1}
{"durationMs":2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8bdcfdf1-5472-46f3-b531-b14a651d65d8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:40:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02dd1dfc-7f7d-4fd0-ad09-e4954e09450b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:45:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7876810e-a4e9-4e7e-ae1d-5097f4026174","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:50:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac1e1d0b-b36a-45d3-90a7-f25d6ef59bf3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 04:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 04:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 04:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 04:55:00","totalConnections":1}
{"durationMs":3.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"38baf965-d395-4a02-8583-9e275c0daca6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 04:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 04:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 05:00:00"}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a7990cf2-9cc3-47fe-b565-ff82f0b8524d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:05:00","totalConnections":1}
{"durationMs":2.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3ca50fe-0abe-45ad-98d1-11ed25f645f0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:10:00","totalConnections":1}
{"durationMs":3.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c3d6f53e-e6cb-46f8-ae04-97c5582867da","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:15:00","totalConnections":1}
{"durationMs":2.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4b3eea0b-c9ca-45ef-b78b-4671f4d24ce4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:20:00","totalConnections":1}
{"durationMs":2.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"37e648d1-e52f-47d3-b1d2-5e0d6471aa38","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:25:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3aa3a758-b5b8-44c9-8036-b95f4d8992ad","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:28:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 05:30:00"}
{"durationMs":2.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2fc56315-4cd7-4c5f-a01f-0a5549bf2235","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:35:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0f5cb1f1-7ae9-4958-a4d1-8a9a7af552cb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:40:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f31583ca-e5e0-4f74-a167-3dd2fcfd6cea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:45:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e5d3e40-c347-4837-86c2-c8f9a7a6164e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:50:00","totalConnections":1}
{"durationMs":2.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5c87ea7f-b944-4952-a016-9cbc1611ecb6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 05:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 05:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 05:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 05:55:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5b5e675b-ad8d-47c3-9021-98fbd54233c5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 05:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 05:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:00:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"86e593a0-ff18-4df7-b892-73257357ef40","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:05:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"070285a1-58da-44e4-b435-26258439397d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:10:00","totalConnections":1}
{"durationMs":4.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9a435a74-ed3b-4355-a176-33aa56105d28","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:15:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5f01031f-8023-4a1e-a482-cc8ee5928f32","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:20:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"50865817-a045-4c11-a5dc-a8cbd33bfadf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:25:00","totalConnections":1}
{"durationMs":3.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"54045f57-339e-4238-be7f-324036d3ac67","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:30:00","totalConnections":1}
{"durationMs":3.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1eaa4ef3-fe88-4d36-8957-dbd1abe40d3f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:35:00","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"405d4c8c-e160-4f0f-898b-6bc62615b483","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:40:00","totalConnections":1}
{"durationMs":2.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"95945b64-7437-44b6-b4c9-f52d1021b91e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:45:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a5706e1-76da-4be9-b992-138b679d9cee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:50:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"56f1294f-95a1-437a-a38c-08630ef8bb0c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 06:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 06:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 06:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 06:55:00","totalConnections":1}
{"durationMs":1.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4952aa1d-51a6-4075-84f4-d157c58abd23","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 06:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 06:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:00:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60f74e75-24dc-4177-bdf9-2df116ecabb8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:05:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2676dd66-b480-4703-93bb-f91fecbe1b27","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:10:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2728b8c9-93b0-4aba-aa29-b333a3dcd618","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:15:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0fb0df72-141e-4015-bf81-d66373fdf7f5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:17:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:20:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3debbff-5fcf-4db3-920b-5bc39d15f0ab","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:25:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"868b5710-41ac-4581-9d67-a8be1b0cfa54","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:30:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5793c25d-f37b-4a6c-aa11-38f1207ac53d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:35:00","totalConnections":1}
{"durationMs":2.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8d7ff810-16d5-4768-89de-7d0a7b808572","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:40:00","totalConnections":1}
{"durationMs":1.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"840bf85c-ef6c-48e7-830c-73bdfc507f7a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:45:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7cebb759-648a-4522-a0c9-49b38b86bd46","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:50:00","totalConnections":1}
{"durationMs":2.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a6f5d3f8-1683-4259-9b07-555beb309291","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 07:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 07:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 07:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 07:55:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0b0e6072-c64b-4b13-bc57-e6f919bfa91f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 07:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 07:59:01"}
{"level":"info","message":"[CRON] Library overdue check started","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"error","message":"[CRON] Library overdue check failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/library-overdue.job.js:14:56)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 08:00:00"}
{"durationMs":4.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac9867b6-178c-46b8-bef6-02b0afa1a9cf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:05:00","totalConnections":1}
{"durationMs":2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ba56f65-e32a-414f-b2fd-3a521e8e9b88","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:10:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"373eab58-f169-4f19-abdb-8e38042b96e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:15:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc2fc35f-bf6d-4263-ba9a-fbb56ca8162a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:20:00","totalConnections":1}
{"durationMs":3.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b756885f-2905-4e2d-901c-6f6cebc56ef2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:25:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3fa21968-518a-42ae-9584-4ddc0d67b55d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 08:30:00"}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f229b774-2a22-4897-bd67-9c38a4ec081f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:35:00","totalConnections":1}
{"durationMs":2.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a275592-82f2-4de0-a8fe-d46b2ce50fb3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:40:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:40:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:40:01","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"07f16cf9-4f74-4786-91ea-4ce8239e9f8d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:45:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"948ab883-98e2-4116-872a-6321ad6fd829","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:50:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"402ea49b-5ba5-42ef-8f69-ac41b3b0794b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 08:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 08:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 08:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 08:55:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"564b4dda-5450-476b-b943-d0b2b1688650","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 08:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 08:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:00:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1b4ab7c0-266e-42fe-9c78-cbe75caac82a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:05:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f17afe5e-f5a8-462e-b20d-890d71efe57c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:10:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b0efd720-fb50-449a-8d1a-d628d2cc63d3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:15:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"09023d88-fd78-4c97-b5a4-dd6f5a9eb46a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:20:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9ad46b86-094d-40f6-85e8-3238994fb0f0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:25:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1528e70-2aee-4eef-a714-a0d5f1498ea2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:29:00"}
{"level":"info","message":"[CRON] Attendance alert started","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"error","message":"[CRON] Attendance alert failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/attendance-alert.job.js:19:53)\n    at Task.execute (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/cbcsms-backend/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 09:30:00"}
{"durationMs":2.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"003cb852-8c98-4fb1-b1d0-72a25c82236d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:35:00","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cb788b31-d3ec-4cc7-8202-5a351303f222","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:36:00"}
{"durationMs":30.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"b105c94a-d33d-4b64-b8ca-f43f395ab0e8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 09:36:57","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:40:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fc3f26c-d46f-48a8-84ab-17ae00350b99","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:43:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:45:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"acf545bc-f61d-4749-85fc-0fdd93278771","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:48:00"}
{"durationMs":15.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"0fd2f13a-8696-49d3-9139-5165f545baaf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 09:48:40","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:50:00","totalConnections":1}
{"durationMs":3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"84374e8d-ced1-422b-bca2-15bd4264f1bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 09:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 09:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 09:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 09:55:00","totalConnections":1}
{"durationMs":2.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3826c05-86e7-442c-ba03-d2fee733b93c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 09:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 09:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:00:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81b9e2c8-bb1b-4a7f-a9b0-6081baf32e86","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:00:02","userId":null}
{"durationMs":18.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"3b2b3df0-d80a-4185-914f-fca384c5ae82","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:00:02","userId":null}
{"durationMs":34.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"bc1f8aa6-15a2-4506-a740-65fe812c8f5b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:00:48","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:01:00"}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8155de11-a4c3-430b-82e0-1b154cd9de9d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:01:00","userId":null}
{"durationMs":14.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"1bb245e1-3560-4353-87e2-ff0c482cf94c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:01:25","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:04:00"}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cb1d54c5-1408-4bda-a96c-cfa7d7de2332","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:04","userId":null}
{"data":{"id":null,"label":"Green","name":null,"type":null},"durationMs":66,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7daa774e-d84b-4182-a912-fcbe65251516","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:06","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"af8177c7-5223-4edb-ad90-cf2951dbe79e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:20","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"78286204-cfc2-4dc2-be60-f935e3cd4c42","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:57","userId":null}
{"durationMs":549.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"716b19f1-a5c4-465d-bf2f-f2aeccbfe61f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:58","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2abc7c39-bd00-4b82-b026-200c33ed2672","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:58","userId":null}
{"durationMs":42.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"ccd36a91-a083-44ec-8946-ab5837e312e6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:59","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:04:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7da931bf-a276-476b-9366-880ffd6ab51e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:04:59","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:05:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c15fa603-2ec1-4acc-956a-b4a31147e0c0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:05:02","userId":null}
{"data":{"from":"/platform/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:05:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:05:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b740320a-f609-49db-a730-c9a8edfb9be6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:10","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:05:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:05:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"801df17f-3490-4756-92d4-66ee72dc548c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:18","userId":null}
{"durationMs":764.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"d0d3ea66-6317-4474-86a9-607ec3c838a7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:18","userId":null}
{"durationMs":48.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"a9e32930-2e4b-4ff1-b00a-47adbf3711ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":54.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"9289fe2a-28fd-4c78-b6a7-5186704a53b3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":129.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c9a93606-0f3f-433d-b72a-e4182e261e68","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":417.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"ecbae8bf-cd22-4dfc-9ee2-1058f7304146","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":467.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"7aec2d40-9ec8-4342-8250-fbff5e300c15","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":436.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"d4f2e8aa-9def-4971-a744-4aedd8043977","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":157.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"2c8aaa9a-4a9a-4598-b1e3-51980b212b78","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":209.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"2bba3dcb-6896-40ef-ad7a-99a7331c0b69","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":338.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"a1a709f1-2d0a-4f6d-9349-d3e434a68683","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":325.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"92b64887-9fe4-4350-bb7c-fbfb67b52994","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1213.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":447.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":442.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6a1f6c43-e8fb-491b-ae53-ce44a5a82867","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":322.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"26c2980f-6cce-4022-9108-e38baa681e13","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":121.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"ef8d3edd-b050-42d8-886c-37546cbe5cfd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":133.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"20b91349-ef81-49f3-80ee-63770e6ab08d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":473.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"ecc707cd-ad7c-4a42-b0c5-dfda45831be6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":447.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"86920e4c-bc95-4608-a3b9-34ddd0f6ad2d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":122.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"9727da45-5a16-4d25-9fe2-1b682b61018d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":346.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"f15eb588-7a99-4b04-b6d9-ac8dfbee9311","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":452.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"4fc66fe4-51ed-4c67-b80c-775548b86c23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":808.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1181.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1121.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1241.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1277,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1037.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1444.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1481.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1492,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1251.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1263.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1528.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1528.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1379.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1380.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1645.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"45a928ef-02c9-42ad-be51-be030c2b0cba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:05:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:06:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":53,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a867efa9-2d3f-4713-bf27-5211a6c5117f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:08","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":59,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1ad2937a-6788-49fc-92e2-3253388a6696","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:09","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":38,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"62a72921-2fb0-4ec1-9939-224afa4afaac","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:10","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a771a798-f391-4938-82ac-7ae4342e2386","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:18","userId":null}
{"durationMs":101.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1c757224-0d04-4e93-a976-e60883928a07","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:06:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"aafe46ee-42a4-4f12-8635-ff558d5ba552","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:06:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":49.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"9da8ade0-c762-4937-b60c-ef58087a8daa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":546.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:06:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":453,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:06:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":424.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:06:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aa57b892-e7b4-40bb-9e00-9064376203f7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-21 10:06:23"}
{"durationMs":13.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"3179ed87-37fb-4964-9d08-14341024af13","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 10:06:23","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":76,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":756.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"05bfa3eb-a978-44e3-b72d-894c7ecc5955","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:24","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:06:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c194e6d-8cfe-4b02-8b9c-642c53377b2d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:06:28","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:07:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:07:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"00fd09f2-08d9-4472-8186-dfc536ca505f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:07:07","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-21 10:07:08"}
{"durationMs":28.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"0464d30f-1fda-4c8d-97ab-edb1356eaa62","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 10:07:08","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":50,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:07:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":442.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:07:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b16e5603-45c5-4b9d-8b39-4e3175072433","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:07:09","userId":null}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:07:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:07:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b4fc2f58-cc4c-4ca3-a5c7-bfde5889e41c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:07:16","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:09:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:09:52"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:10:00","totalConnections":1}
{"durationMs":2.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"409c2529-bf5d-4694-a0bf-134c53e3ef04","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:10:02","userId":null}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:10:35"}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:10:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"45f2e183-2c23-4719-8d52-26f0f5095418","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:53","userId":null}
{"durationMs":682.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"a5725abf-c811-4d37-a82d-ceb5b0e5043a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:54","userId":null}
{"durationMs":58.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"a8f25079-0231-486c-940b-ee755f7a197c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:54","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":223.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"29fe7e2e-f664-497b-8677-e6c1c446f859","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":437.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"5195474f-e09c-421a-8c65-0a6cdcd380c1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":309.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"8b245652-c48b-45e4-abd0-4aeb7f0fbede","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":23.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"95ec1517-5e70-448b-9d3e-f605a2e39c17","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":24.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"963cc5da-221b-4d75-bc53-e0c7a739f683","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":2048.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":531.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":20.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"10577526-f78b-4c14-b8b7-8c73acf71d64","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":56.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"34679756-15a3-4aaf-81dd-e356e2d50c8d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:55","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":134.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"156e4e8c-fd4f-436d-b81d-432ecf433156","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:56","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":133.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"49420db1-9dad-4369-838b-7b5596518ef3","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:56","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":104.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1d6af100-8c2d-40a1-9d02-373536204a98","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:56","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":85.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"a647a1cd-b387-4a15-bb3a-e9fcf7b5c182","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:57","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":93.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"9679a549-ee83-423c-b92d-d6ff10244d5d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:57","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":89.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"b2935a04-e506-484f-8469-6b0ae7c683e3","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:57","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":41.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"1eb9737e-f940-4d5d-b0c9-92ef3f12d4c8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":53.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"79ce2cba-1697-4f84-9f62-4827701ae106","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":85.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"294399c5-6f52-47ee-8959-682c0f04820b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":90.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"75fe725e-0c7f-4461-9749-86327e30d98e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":93.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"0b47330d-8d91-4f0d-937c-7fa65108cc71","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":730.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":940.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1068.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1088.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1091.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":2404.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2406.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2413.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2415.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":496.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":499.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":522.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":22.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"363209f3-831a-4fe0-a90d-cc7d3610fa5f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":884.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1014,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1016.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1018.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1026.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:10:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":20.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bbfe93b1-4631-4940-b95f-56c3cf3d67c8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:10:59","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:11:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:11:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b626b6e9-4202-4140-a0a4-0fc846d68db9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:11:36","userId":null}
{"durationMs":587.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"34a5feb3-4224-4e46-b203-ccec8342c9e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:11:40","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:11:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"33cf3780-1937-4979-9b1e-a19a9b123158","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:11:40","userId":null}
{"durationMs":45.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"ea42d642-8d45-4725-8854-fc43aea19d32","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:11:40","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:11:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:11:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6aec8896-79da-40bd-a285-3d90baa3969f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:11:41","userId":null}
{"durationMs":124.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0d22920d-ac54-4d45-8008-4865f95ffab4","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:11:57","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":135.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"92a21669-c4d1-4dc9-a467-e688c95433c2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:11:57","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":130.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"4d6724af-535e-41c6-8bb1-3a7a25ffd9ae","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:00","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:12:00"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":852.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:12:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":864.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:12:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":18.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ba0b838a-69e2-4c7f-a26d-5cec30c3805e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:01","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":2123.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:12:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":20.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"382d4128-8ab3-400f-8183-c4ebc570cfaa","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:01","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/platform/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2e923715-3e06-4677-9195-20118dbf31fd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:11","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eaba1688-f0f0-4857-8edc-025df7380fcb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:19","userId":null}
{"durationMs":780.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"cac8b43d-3df6-4735-b042-985bafe3a352","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:25","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"39e04fe1-3c02-4e0e-aba7-b8ca1382e54e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:25","userId":null}
{"durationMs":46.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"2bd34a59-4ec8-4291-b148-46509a197ca6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:27","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:12:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b97c1167-14c0-4b67-907b-ba35bbf652f6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:12:28","userId":null}
{"durationMs":119.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8e91b969-b275-46d2-aa46-55c0a2c32e01","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:12:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":90.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"9bb1c2f1-f25e-43a5-852e-975ddeef4592","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:12:58","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:13:00"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":535.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:13:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":535,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:13:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":24.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"357fc752-9d29-4209-8936-68840b8b159e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:13:00","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:14:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:14:50"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:15:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c0b7ffc1-28ea-4e96-b726-f76899cf5c3b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:15:01","userId":null}
{"durationMs":545.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"c0523105-7cd9-4010-bcb4-067067afbb12","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:15:34","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:17:00"}
{"durationMs":325.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"7705907e-be16-4c26-8495-b25a99311a50","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:34","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":345.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"55f08429-b886-4ec4-978c-d58dba92e742","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:17:34","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":112.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"e1561e46-e608-4117-8e27-e7997f52ff7e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:17:34","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":161.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"4af9990d-f84e-44ec-b717-41f8c49041f8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:34","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1702.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:17:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1944.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:17:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2102.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:17:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1925.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:17:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":27.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"10a68e26-8b74-4421-9e99-3347536963cd","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:35","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"href":"/forgot-password","navId":"1787296665879-216699","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:17:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787296665879-216699","text":"Forgot password?","to":"/forgot-password"},"durationMs":188,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:17:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787296665879-216699","to":"/forgot-password"},"durationMs":201,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:17:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bcc0f92f-6a32-4a5c-992f-b4972774f268","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:50","userId":null}
{"durationMs":17.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"b2145665-be07-4ae8-9aa8-d404a277d218","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:56","userId":null}
{"data":{"id":null,"label":"Send Password Reset Link","name":null,"type":"submit"},"durationMs":57,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:17:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":470.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:17:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a0b94558-fe96-4df2-bccb-2c7fd8c444e6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:17:57","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:20:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2cab3325-6ff9-4612-b683-96f2fde2054e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:23:00"}
{"durationMs":3.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8753bd43-1886-43bc-8bb9-02f775df8d4c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:23:56","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:25:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"561d8316-bd7c-47f9-9d23-fa3fdea4deb2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:25:02","userId":null}
{"data":{"from":"/platform/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:25:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:25:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5987487d-eab5-44f2-8d1b-3ca44196e4a7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:25:33","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:27:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cb46a164-c31a-419f-88f8-c9dc404ed179","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:27:31","userId":null}
{"data":{"href":"/login","navId":"1787297248037-709694","text":"Sign In"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":"/login","navId":"1787297248037-709694","text":"Sign In","to":"/login"},"durationMs":67,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":"1787297248037-709694","to":"/login"},"durationMs":119,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"128621d8-ae94-4feb-b8d5-d527291a9112","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:27:32","userId":null}
{"data":{"href":"/forgot-password","navId":"1787297249395-201998","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787297249395-201998","text":"Forgot password?","to":"/forgot-password"},"durationMs":48,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787297249395-201998","to":"/forgot-password"},"durationMs":54,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8469f502-7768-4093-9cf6-eb2fa03f60f0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:27:33","userId":null}
{"durationMs":19.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"a4024c2e-a651-42d3-ab76-8188a9f45e6a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:27:41","userId":null}
{"data":{"id":null,"label":"Send Password Reset Link","name":null,"type":"submit"},"durationMs":55,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":479.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:27:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"599fbdfb-1fd0-4f99-ac2a-385d284e59cb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:27:42","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:28:00"}
{"durationMs":39.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"16e0d2fe-a345-4177-905c-a3a2682f9a16","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:28:16","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":39,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:28:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":632.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:28:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"df46b73c-4a56-44ef-bd22-21544790ae02","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:28:17","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:29:00"}
{"data":{"href":"/login","navId":"1787297355230-293935","text":"Sign In"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":"/login","navId":"1787297355230-293935","text":"Sign In","to":"/login"},"durationMs":143,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":"1787297355230-293935","to":"/login"},"durationMs":176,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"512421d3-5a59-4760-832c-2d332d073a58","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:20","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":46,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e93559b1-b8b6-43bf-85b1-3901694a966f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:23","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":39,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4c718edc-54bd-4c7e-99dd-ca8f95c4a634","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:25","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":38,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d7f5d2d6-ff3d-4eed-91b3-6cb63e09b26d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:27","userId":null}
{"data":{"id":null,"label":"Green","name":null,"type":null},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d5157a86-77d3-4eeb-a8bd-cf21073d2cc8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:28","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c9c81a85-7834-4bf4-adc2-6754de6b953b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:38","userId":null}
{"durationMs":687.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"e5a8198c-784e-479c-a8b1-d97e941a6aaf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:39","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:29:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"83b194fe-4d9c-4b4b-ac33-d163ec6cdde0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:39","userId":null}
{"durationMs":44.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"0e890944-31bd-44e6-8109-eaf4d35dfbeb","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":40.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"2fc1265c-40eb-4949-902f-05de1de4d644","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":402.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"152b4848-784f-4f9c-86e2-b06977788ea0","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":418.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"22efb662-1c58-48a1-b413-4b929084199a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":358.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"7f1751ba-48b6-429e-a2a7-9b4c3d078903","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":68.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"585f18ed-840b-40a1-99ce-b5031cb87a58","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":57.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"f9d67633-0d18-4dec-adf9-9e8289318e21","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":88.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"f365e986-56b8-420d-88ba-c7174a3f25d9","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":119.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"e740c820-1512-4087-b3c0-f6fef3a9ec4f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":36.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"cbe93f5a-e0c3-4ad3-8081-549e069909a4","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":105.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"8c559fa8-bee4-4d8d-996e-af55fd57477c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":103.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"27acef8a-6959-4ba1-95b0-f8b1ebfa9c61","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":177.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"72940442-3ecc-463d-84d1-43a87c6e91bd","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":175.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"e3acd938-4a57-464b-93d2-2a10480451c1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":133.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"2704684d-ce3f-4c53-a569-f68ac701953c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1202.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":632.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":25.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a8da5b02-5c02-435c-b371-777764964f5e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":225.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"7db405a7-18da-41a3-aeea-bd4417677be2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":140.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"9f0a5ff3-688a-4c49-8199-1318bcaa07ec","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":219.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"32da0089-2055-4358-9e65-3486a3f535bb","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":807.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1411.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1416,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1424.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1081.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1086.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1087.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1089.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1368.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1505,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1554.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1566.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1579.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1580.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1809.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1824,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1825.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":19.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9000b14a-b0e1-4d10-b1b2-8b36b349feab","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:29:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:30:00","totalConnections":1}
{"durationMs":2.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"49dda27c-0691-40f4-a340-8798488b8068","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:30:01","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":52,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:30:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":22.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"76b62ae0-8ce8-42c4-bbce-d77f41c7974b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:30:21","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:30:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":20.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f57590da-767f-449d-b109-0c95a4aa48c9","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:30:24","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:30:32"}
{"durationMs":68.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"cf0ba5d3-c0c7-4391-bead-591e22a20bf8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:30:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":49.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"664e3b13-5747-4c71-a3cd-3363afb8fb48","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:30:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":546.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:30:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":26.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"735774e6-2073-4ef6-bf53-bff9da9f6fe9","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:30:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":70.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"5c8b18f7-ee51-40ab-a00e-c78259583319","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:30:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1925.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:30:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1789,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:30:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":43.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"802201af-8006-495e-8555-e9b2860c0f02","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:30:44","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:30:50"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:31:00"}
{"durationMs":95.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"66468e5f-8289-410a-88fa-e7322a68ac96","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:31:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":593.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:31:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":46.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f64cff47-8ebd-454a-86cf-be0a1b7cd71e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:31:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":105.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"4b79b60d-4ee3-408b-8974-6b410bcb4eb2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:31:44","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":51.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"88e19b0c-38fe-4191-8261-d6b6ee61ce3c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:31:44","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":642.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:31:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":733.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:31:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":24.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0e61a780-e80b-4a51-a40d-a9f7ade5af0f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:31:45","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:31:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:31:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0b0df360-04b1-4666-8d49-36d2797c50cf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:31:59","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:32:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"83227d56-ce95-4ace-b709-54920aa1a40a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:09","userId":null}
{"durationMs":718.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"2f014335-a9ee-491d-b583-483bb593ec54","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:11","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"df047820-e5d6-4542-b7e5-78f2590436a4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:11","userId":null}
{"durationMs":56.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"504ee5db-1b8e-47ef-aee7-e5b7e8225ccc","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":314.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"e2aabf72-5214-4696-96f3-4bb8d5e34d0c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":385.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0a844f85-b6f5-4fd6-8c31-d3c3b01f0f28","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":447.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"775662c1-1049-4d28-9dee-a9beb71bc099","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":58.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"49988e1c-4ec2-4ec7-9307-df91558ae730","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":78.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"1c805af1-d7de-47bc-9c4c-b7d534618673","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":79.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0e352b7a-6c43-4d0b-8cb6-f6abe3b5109f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":110.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"5375c731-a58e-4cc8-9aea-a4a36e5f7d5d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":34.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"890d9ec7-8480-4bd6-beeb-53b33e3b0ef4","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":43.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"d9e10da1-b85f-4b6d-bff2-c876e772bd09","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":79.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"a2c9e6e8-155e-4fcc-b204-ee3084039708","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":44.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"debd5d3f-f88a-4e6b-b998-9af1e70c656d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":46.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"ea344bb3-4e20-474b-af94-689cb1f735f8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":35.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"70c2826d-378d-4151-b3a8-130783968b33","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":46.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"a87d550d-cc52-4c43-909b-b7dc01cfd96b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:13","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":91.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"c2ba18ae-7ac1-483b-8ef1-d952989b4778","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:14","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1150.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":584.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":49.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bc52e74a-e1ca-4409-af2e-9f1f225b6d79","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:14","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":149.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"11b8bdef-1e2b-483a-855a-5160c38e981a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:14","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":157.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"6c32974a-8bd4-4e7e-a6e2-6bb97cccf8ec","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:14","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1339.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1343.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1466.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1469.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1535.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1536.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1538.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1764.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1765.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1772.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1967.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1550.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1551.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1875.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1879.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1883,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":2340.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:32:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":22.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"735c54ad-7548-451c-9316-e94af6756608","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:15","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ecbe3cdd-712d-485e-b71b-8e07aa7d4a4f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:49","userId":null}
{"durationMs":566.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"442d3371-31ef-4bc1-9000-306e4ee2e1aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:50","userId":null}
{"durationMs":42.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"99423eab-94c5-437b-9293-3c662d63b8a6","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:32:50","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:32:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f112fdee-4e03-4eef-bb22-dfd5949cdfe3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:32:51","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:33:00"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/forgot-password"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","navId":null,"to":"/forgot-password"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:05","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":32.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"13238e79-b03e-48cf-8232-8dbc2798c1a6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:05","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":84.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"8eef963b-86e6-4760-ade1-dc709db62d64","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":100.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b617df64-9bc6-426c-9423-b36137f7f1a5","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":168.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e072a526-1b70-4ebf-96f3-ccc44f637a2c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":162.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"365cf696-e949-40aa-b4b3-6fc4fe003486","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":194.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"0076df81-9cd7-48f9-a03f-3803153bbda0","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":152.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"1a01e6c4-7ebc-41ad-989c-1f0dffd236d0","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":23.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b06cc0ba-b37d-42c6-ba09-b2047576eda1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":262.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"b8d39aa6-4bb2-4f79-bf6a-0fccc2c311e7","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":397.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"52ae077f-68e8-4dc9-92b2-c93e6e63b5ba","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":369.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"500b51e1-4781-42d9-a0e3-b6a9f3b78a15","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":360.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"9bd4d27c-45f1-48dd-9fe9-24aac20f0ae6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":396.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"02f67d86-7c0c-4c4e-9c8c-adedd826d5b6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":412.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"baafe9cb-0d69-4838-81cc-064179d55d2a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":29.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"a66315b8-0cdd-4432-b405-8d6f2d32a8df","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:45","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":62.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3792d3b1-0c25-4956-95e6-91fe5f7b2365","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:46","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":72.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"7807f422-de8d-4717-867e-42b6b685c7a3","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:46","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":84.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"aab1ab64-0f4f-4cac-8c88-7c46fb97ecdb","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:46","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":136.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"ce1f3e37-7b5d-4c33-ad99-221784103e9c","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":131.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"19bb7eac-948f-4cad-9226-cb3f99aa40d5","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":126.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"3e2e1b3a-d938-4db5-9933-c9b512c8e4d9","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":127.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"df21028e-c05c-4c96-b6a6-f1195a929da7","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":41.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"f4dde8d5-bbf9-4b3b-b261-ab387539c46b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":173.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"2c96adfc-eb73-449f-b224-cfc1818e3ef2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":61.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"f601ddbd-53ed-4375-a126-9ca45d41ce39","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/forgot-password"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","navId":null,"to":"/forgot-password"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":3302.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":3308.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"href":"/login","navId":"1787297621758-492848","text":"Sign In"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/forgot-password","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/forgot-password","href":"/login","navId":"1787297621758-492848","text":"Sign In","to":"/login"},"durationMs":64,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/forgot-password","navId":"1787297621758-492848","to":"/login"},"durationMs":114,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":4627.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":4629.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":4631.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":4634.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":4636,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":4638.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":4639.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":4641.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":4642.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":4645.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:33:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":21.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"819138bf-135f-4c8f-b6f7-07aa308cc658","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:47","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":37.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"41152e39-1efe-41ea-a553-2b401590d890","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:33:48","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":3017.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":3020.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":3024.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":3027.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":3885.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":3889.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":3892.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":3895.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":3898.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":3899.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":3900.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:33:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c7b39e2b-b107-42cf-9d54-97845cf88905","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:33:50","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:34:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:34:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"91a86774-b72c-47c4-8497-6c76148397df","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:06","userId":null}
{"durationMs":636.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"00b24f34-f701-47a1-a65e-26c4aaef397f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:07","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":36,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:34:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c77a5a9-cfbb-4188-8be1-245fbb743bfc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:07","userId":null}
{"durationMs":46.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"fe7de737-b660-4dff-a8e1-78efe8327695","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:08","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":116.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"e395b885-a15f-4acd-b89d-0ae3c0321fcd","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:08","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":54.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"77125290-bc0e-4773-8155-c2072e14c667","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:09","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":50.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"190602a2-c624-4369-9fd9-1d9cda3a7783","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:09","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":73.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"428be4bc-8973-495f-8441-3b201e8ecfc1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:09","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":115.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"060c0a66-c2ef-42ac-9cff-3f733d002273","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:09","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":118.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"d970a863-e87e-400e-9e10-2d840770910a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:09","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":248.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d68fe27b-1dd5-45cd-be44-1b05283fa104","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:10","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1152.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":536.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":131.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d762e2ac-c9db-4144-ae2f-325dd18d05cc","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:10","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":227.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"55114271-18db-4a5c-aa11-d933bb26e32b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:10","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":234.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"da7bfa21-29d9-48e4-ae1e-417638e436ca","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:10","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":52.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"dcedaf42-66bf-41da-be17-2f1f3448aff1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:11","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":70.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"887ffee3-3577-4231-bf61-c1dd0d9845c8","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:11","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":76.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"2c491676-9a63-4cb3-915f-893e9f56ce45","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:11","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":68.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"22178b4c-5736-4769-b332-989437b29655","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":83.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"fc24492d-2045-47e8-8cd9-419aacdf389b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":34.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"96cb484c-4dcf-42e8-a993-96b6f210644e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":563.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":996,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1024.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1106.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":2483.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":2318.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2729.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2733.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2735,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":526,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":37.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ff46ec65-a934-4bf5-84e9-dea8923a6e96","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":92.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"d5fa9266-6135-4a7a-a1db-69dd0fe5b36b","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":87.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"8b3c9000-b731-4521-b46c-ddd6bccc2eaa","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:34:12","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1006.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1009.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1527.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1529.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1587.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1994.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1995.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:34:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":32.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2dda322d-dc3d-4118-bf02-60ade4e7d5d0","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:14","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:34:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:34:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"efcd299b-e28c-4ff6-90ae-18c180d96073","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:34:17","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:35:00","totalConnections":1}
{"durationMs":2.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e86495de-4b3b-48d8-b84a-cfa330ad0f9d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:35:01","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:35:30","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9d4d5deb-c960-4586-a4b8-5dc75ba29637","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:30","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:35:38","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b86a1939-a21e-49c7-ba86-c284cb75ddb7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:38","userId":null}
{"durationMs":721.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"4268025f-8f46-4a6a-8d9e-16a376dc8379","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:38","userId":null}
{"durationMs":51.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"317d20b6-8d66-4d9f-89b6-4f0abe147022","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:39","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":42.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"3da9e9d3-17ca-4b7e-99dd-77f0282bee6a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:39","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":45.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"719b35ad-06c3-4c4f-bfc6-7cdf3d19c602","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:39","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":234.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6ae0b515-bd6d-49d8-b753-87e69fb3ea6f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":100.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"ac1bad92-e8a3-4f3e-80e7-59339a1135b2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":84.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ea6f8145-c4bc-43f1-a748-daca52155348","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":71.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"b0baaabe-a5ed-41d3-bc5b-a53c569cfa87","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":68.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"f1d23e93-8555-456e-8811-c5efd1cad35e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":53.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"a5dd87cc-0464-4129-97f9-f6e189efe974","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:40","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":53.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"88b02a0d-192c-43d5-9b03-8d96134417ab","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":49.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"ce897f6d-5413-42a2-909a-d770f5db7d38","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":42.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"ef55c637-3143-4274-a15f-3b540fcf06ed","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":65.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"6ea544a7-7579-4716-adfc-41d2153b4237","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":65.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"73f4a8cb-a44b-405c-836c-3871c838fed2","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":30.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"95c86e91-892e-441b-b9f3-1fc42f63e43d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":36.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"602da46e-2915-4ab9-b857-54f8548a60b6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:41","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":26.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"b549a8cc-0ff4-429b-8cfa-a7a32ab2e72f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":27.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"fb6351fe-87c2-4877-afe0-69075793097f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1761.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:42","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:42","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:42","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":501.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:42","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":18.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"85c54b51-05b4-4dc6-a917-5b5def888ea9","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:42","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":656,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":970.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1180.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1382.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1281.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1390.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1668,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1769.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":2083.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":2146.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":2399.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":2564.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":2457.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":2707.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":2737.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":3012.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":3167.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 10:35:43","userAgent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"durationMs":18.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a966282-64ca-4539-9da4-f6b295d3e71a","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:35:43","userId":"c4c21939-2faa-45ff-93b0-6039ddf3142b"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:35:49"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:36:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:36:15"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:36:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b64f9386-15af-46f4-905b-90d5ced2fe41","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:46","userId":null}
{"durationMs":713.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"77879a80-69bc-43df-9940-ea248ff15528","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:47","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":45,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:36:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a0d3a395-d403-40a0-a1e3-2bd4aa89538a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:47","userId":null}
{"durationMs":42.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"913397cf-0684-464d-8db4-01822050dcdc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1222.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5bc21d64-f9cb-4fd0-ad11-2f91bdc3d288","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":110.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"a55ec809-8c2f-4feb-b48c-f6591ebfbf6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":127.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"dff670ba-adfb-4582-9c85-b2373704398f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":47.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"e387c364-ff53-4ff5-9e9e-a9619efd7c6d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"1b282456-844b-4b11-a924-f69f595a71eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"29a6946e-ddc8-44ee-9103-22975a7f69c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":52.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"f7e2526e-2433-4661-bd49-20b65639528a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":91.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"fa67f765-d412-4169-954f-c07a8fa6b8b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":89.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"61ba443d-7c0a-4fa3-b327-9647a6932bd3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":936.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":727,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":733.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"813c7c49-78a2-4f93-8518-689725b06e4e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":114.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"f007c3c3-06c3-4ab3-bb69-8c4d07a47527","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":153.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"93a8ee92-09cb-4533-a9aa-4c4445bd400f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":242.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"9973aca1-61a0-4e7d-bd5d-6e34c978cef5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":95.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"8ea2a46d-dba4-488a-9b79-7454635dc8de","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":261.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"4ab7f1ab-233e-4cce-b76d-dbe61d8fc7ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":284.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"2ccb77fb-9d94-420b-8fd4-fdc7d49a0051","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":174.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"9b75300d-875b-49d2-a44b-e868b0cb338f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":187.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"ac9c448e-d2d7-4234-b2ff-d0d1ac09628c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":142.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"f3d62c7e-674d-44bf-8369-999ffc5e0eee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1468.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1473.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":2843,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":2663.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2668.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2672.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2688,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c76ce7f4-aa6a-4a11-891b-b5c968239430","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":65,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1921.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1924.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1962.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1978.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1981.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1984.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1987.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1989.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:36:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a79b0919-4019-4d4e-8b6a-a68d93a2b4e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:36:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:37:00"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:37:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:37:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a8d39fb6-d132-4868-bfae-4924746bec9e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:37:21","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:37:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ec872154-46c2-4bf4-8508-11ed8ba57c66","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:37:33","userId":null}
{"level":"error","message":"Error: User not found\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:389:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-21 10:37:38"}
{"durationMs":39.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"6cd37552-26ca-4667-8579-b2c12942d375","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 10:37:38","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:37:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":507.9,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:37:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"99ffc0c1-515a-4805-ac72-007735af01b4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:37:39","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:40:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b6c8fce0-ccb8-4958-b628-bfb12b689d90","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:41:00"}
{"level":"error","message":"SyntaxError: Expected property name or '}' in JSON at position 1\n    at JSON.parse (<anonymous>)\n    at parse (/home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/types/json.js:92:19)\n    at /home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/read.js:128:18\n    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n    at invokeCallback (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:238:16)\n    at done (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:227:7)\n    at IncomingMessage.onEnd (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:287:7)\n    at IncomingMessage.emit (node:events:524:28)\n    at endReadableNT (node:internal/streams/readable:1698:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","service":"cbc-sms","timestamp":"2026-08-21 10:41:24"}
{"durationMs":542.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"1e283efc-374a-4094-b8d9-5881558ec14a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:41:38","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:43:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:43:08"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:45:00","totalConnections":1}
{"durationMs":2.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b0ee3cf0-a72d-416a-b3d1-d55aac80bf0d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:45:02","userId":null}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 10:45:21"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:45:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:45:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2a6fc8d5-5c8c-4e31-8460-b62b53796645","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:45:54","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:46:00"}
{"data":{"href":"/forgot-password","navId":"1787298404672-298518","text":"Forgot password?"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","href":"/forgot-password","navId":"1787298404672-298518","text":"Forgot password?","to":"/forgot-password"},"durationMs":721,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787298404672-298518","to":"/forgot-password"},"durationMs":721,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":"1787298404672-298518","to":"/forgot-password"},"durationMs":731,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3f75e25c-4f91-4dd3-9e67-b5a12bc38109","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:46:49","userId":null}
{"durationMs":16.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"5d49c8c9-8ce8-44cc-aae0-99691ea2a1c6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:46:56","userId":null}
{"data":{"id":null,"label":"Send Password Reset Link","name":null,"type":"submit"},"durationMs":40,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":474.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:46:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"305e8281-f470-465d-a68c-3826b3057421","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:46:57","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:47:00"}
{"durationMs":13.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"36fb675e-7675-46f0-ac80-89be575e763b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:33","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":406.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5a396df6-50f4-488a-8269-f47a492a2c9f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:34","userId":null}
{"durationMs":13.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"91b6247f-aafd-40de-91c9-ffe53d981fdc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:35","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":453,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"268b50c6-6f27-4def-8339-749a1d548531","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:36","userId":null}
{"durationMs":13.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"508970ee-1876-4fd2-a6c7-da6d9d4c141a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:37","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":403.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1295294b-8e98-4a51-9085-b263dad200cb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:37","userId":null}
{"durationMs":14.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/forgot-password","requestId":"965580a8-8f3a-48d3-bb8c-94fffec9b049","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:38","userId":null}
{"data":{"id":null,"label":"Resend Link","name":null,"type":"button"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"POST","status":200,"url":"/auth/forgot-password"},"durationMs":450.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:47:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"faa607a1-d3a9-48b4-8f01-5215ed5bcc8f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:47:39","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:48:00"}
{"durationMs":2.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b8871dfc-624d-4332-b121-39a3ffd8928e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:48:25","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:49:00"}
{"data":{"id":null,"label":"Back to Sign In","name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/forgot-password","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:49:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:49:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/forgot-password","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:49:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c621d4d-28c0-40db-bd70-3e7172a5d57b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:49:42","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:50:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ee80fdf4-d02f-494c-a820-547f5d9b0a70","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:50:02","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":34,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:50:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ef583452-25f7-4f30-8a15-94b4cfc1810b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:06","userId":null}
{"durationMs":695.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"0585548a-32f3-4a30-9f42-141d3cd68e0a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:16","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:50:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b65e74fb-22a7-42f9-9c81-ec7e12695c57","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:17","userId":null}
{"durationMs":58.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"3dfc259b-add9-4be1-87b8-f9d2da6e5757","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:18","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:50:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:50:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"53b5738e-7d0a-42aa-9f40-ab26782c6178","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:19","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":62,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:50:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e9fe0863-2881-4815-b8fd-0056cc42262f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:50:24","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:52:00"}
{"data":{"href":"/platform/dashboard","navId":"1787298735342-196817","text":null},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1b0bacd3-ebe7-4179-b04f-d0ff2075091c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:19","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":68,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a3cec91c-7f79-47ad-abc1-4390b8bb1d7a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:21","userId":null}
{"durationMs":65.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"b646d349-d4b8-4fe5-9e2f-e2640182796a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:22","userId":null}
{"data":{"href":"/platform/schools","navId":"1787298737641-986882","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/schools","navId":"1787298737641-986882","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":618,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787298737641-986882","to":"/platform/schools"},"durationMs":618,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787298737641-986882","to":"/platform/schools"},"durationMs":647,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d73ed4ef-e0d0-4063-a544-18714f862074","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":51,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9c63d642-1937-419e-a429-9420c27886d8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:24","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":45,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"82da4e17-7fcc-49de-a65e-d94ad3cd6b33","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:29","userId":null}
{"data":{"href":"/platform/modules","navId":"1787298746069-989535","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5d52520b-a9a9-4b80-afc9-7c2a148ce152","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:30","userId":null}
{"durationMs":27.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"ee7216b2-845c-4b00-a6a0-625c6cb5ac04","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:52:31","userId":null}
{"durationMs":33.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"f6a905e4-ce86-4bc0-b31f-1ca425ba7223","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:31","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/modules","navId":"1787298746069-989535","text":"Module Access","to":"/platform/modules"},"durationMs":1890,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787298746069-989535","to":"/platform/modules"},"durationMs":1890,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787298746069-989535","to":"/platform/modules"},"durationMs":1958,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e1e15eed-c587-4700-94e8-abede5316b7f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:32","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":40,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a0388ff0-8141-4c4c-a347-ba492a7da65c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:33","userId":null}
{"data":{"id":null,"label":"Select school to manage...","name":null,"type":"button"},"durationMs":156,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"69791fa6-6ced-421e-a59b-26a20c17ab31","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:36","userId":null}
{"durationMs":24.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"610d8a98-5532-4c0f-a02e-b13991d34493","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:38","userId":null}
{"data":{"id":null,"label":"All Categories","name":null,"type":"button"},"durationMs":255,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0eef093b-f992-4430-a536-8a7d0962008b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:41","userId":null}
{"durationMs":38.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"ef398abb-be0e-4cd7-99df-cf4c96f36cd2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:57","userId":null}
{"durationMs":30.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"4f115833-9f5b-4318-8b0c-2690ddb5b6d4","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:52:57","userId":null}
{"durationMs":41.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"ddc2ad22-66aa-4391-9a83-8f7809e94dfb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:57","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:52:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8ea38f16-cc8b-4a6c-ad10-268060b179aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:52:57","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:53:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:53:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d31c2549-9536-45dc-bdc3-007351f7a1dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:00","userId":null}
{"data":{"from":"/platform/modules","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:53:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:53:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0a27b750-e5a3-4b9b-8b27-25712002e01a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:02","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:53:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e65a6349-635e-470e-babf-c826f9fcbdd4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:09","userId":null}
{"durationMs":773.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"02d1ca4c-254f-4725-8dd1-a2243dc5d26a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:13","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":55,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 10:53:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e40a7730-d677-4767-8874-add1fc232d02","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:13","userId":null}
{"durationMs":40.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"824443b8-615d-4509-95ca-f20985228e70","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":141.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"3963d672-cc57-4b3b-9eb4-cb64113dda6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":104.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"035cdaa3-7189-436b-aa6f-14d295a6fdb4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":222.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"a5514917-a3d1-4e9a-aa78-1eec51256c1c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":199.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"57032903-c17a-4e76-9aa7-4eb0107c66f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":214.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"2341d4d5-ab3d-4765-b9ab-2c5ca62694ef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":47.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"93034ae3-fe73-4637-865e-e98e4a429a52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c614eddd-b306-4175-83f9-c3cf2820f4bb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1227.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":466.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"512516b2-0993-47e6-ad05-0e33d52ff2de","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":72.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"296bdd99-ed94-46f6-b25e-f00bb5abc6f1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":79.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"86eee53b-8842-4b6a-9f5b-a15ed2d85dd4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":69.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ceb87a84-1d61-4c8e-9c33-af46da7de16e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":74.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"183dd46b-6281-4dc0-bb9d-9db502545dbe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":75.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"e16f5eb2-efcc-495f-8c23-029877f61443","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":76.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"fe3658e3-8d69-4600-b90e-02879520d371","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":46.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"7b195790-06e4-48f8-b392-189645f4fda4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":76.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"d2a70581-49d4-4f41-8822-202cb3f6967a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":78.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"2087079a-325b-45a8-bf10-aa9a62486b69","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":42.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"d810fe44-5ee4-4734-abc3-e8e745596be0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 10:53:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":579.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":664.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1083.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1171.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1174.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1063.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1069.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1257.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1276.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":601.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":626.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":765.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":766.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":957.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1029.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1031,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1038.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":81,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 10:53:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c4af2f7e-5e80-43b9-97f0-0be6d5e6bd2f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 10:53:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 10:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 10:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 10:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 10:55:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f34cc4c-a8b4-425f-bc40-b7315c0eff32","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 10:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 10:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 11:00:00"}
{"durationMs":3.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc76673a-414f-4583-808f-2512baf07afc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:00:02","userId":null}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bb1f25aa-a74f-45f5-ac63-be356d9a5cba","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:00:12","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:01:00"}
{"durationMs":103.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3031658b-29e2-4847-8ca0-c8d4f52b1dae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:01:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":190.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"1eab4a42-9954-4c8a-a22e-13231ea60f52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":92.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"c36e6f1e-185d-4579-88a3-3ad382ce899a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":86.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"64e3fc92-e8b8-4ba3-9ac2-22149f3dafa9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:01:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1444.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:01:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1139.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:01:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1636.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:01:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1644.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:01:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"14895130-19b5-4b75-8b9d-bc692e7bed9b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a3ba8c9d-7304-488b-9f7c-edc84e5526df","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ab3fa0a3-eff1-496c-98c5-7dbdf01dd319","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:45","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4c12bf4b-8a36-466c-a16e-faa014ba41ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:47","userId":null}
{"durationMs":548.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"fd448045-45a5-471c-83b0-1157f175e205","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:47","userId":null}
{"durationMs":37.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"84a57bd7-2894-42c3-95d0-e023890888ec","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:48","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7d56486a-6d61-4cb5-a218-89e375c69d21","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:48","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":30,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"601176d5-6267-4c59-8821-a3ef25ce6d6d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:50","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":53,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:01:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d111bfd2-9d54-4e83-a984-e54bd4ee78f9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:01:52","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:02:00"}
{"durationMs":16.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/audit-logs?actorId=platform_user_001&limit=10","requestId":"87b64cbb-b41b-4961-83a8-49d8c6184e2b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:02:04","userId":null}
{"data":{"href":"/platform/profile","navId":"1787299319766-315251","text":null},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:02:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/profile","navId":"1787299319766-315251","text":null,"to":"/platform/profile"},"durationMs":489,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/profile","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:02:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787299319766-315251","to":"/platform/profile"},"durationMs":511,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/profile","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:02:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"116e506a-87d6-4a2d-8ee2-542277d8f03a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:02:04","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:05:00","totalConnections":1}
{"durationMs":2.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"44859153-e5b5-49f9-a41d-2d6f70c344a6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:10:00","totalConnections":1}
{"durationMs":2.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4b9e381a-a7d0-4177-b99d-dde1b5dc26dc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:11:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 11:11:08"}
{"durationMs":20.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/audit-logs?actorId=platform_user_001&limit=10","requestId":"2bbdcdf0-3ee4-4ee8-acf4-3fbde0bac660","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:11:58","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:12:00"}
{"data":{"from":"/platform/profile","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"66.249.93.69","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)","userId":null}
{"data":{"from":"/platform/profile","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"66.249.93.69","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36 (compatible; Google-Read-Aloud; +https://support.google.com/webmasters/answer/1061943)","userId":null}
{"durationMs":2.95,"ip":"66.249.93.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"165e9be8-6976-4549-8d99-5cf2cbb46645","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:01","userId":null}
{"data":{"href":"/platform/schools","navId":"1787299930232-80359","text":"Schools"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/profile","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fb160148-3101-4050-b62f-9dba53537233","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:14","userId":null}
{"durationMs":60.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"2d3d8b7a-c056-40b0-a0d7-bcf994dee704","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:15","userId":null}
{"data":{"from":"/platform/profile","href":"/platform/schools","navId":"1787299930232-80359","text":"Schools","to":"/platform/schools"},"durationMs":1140,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/profile","navId":"1787299930232-80359","to":"/platform/schools"},"durationMs":1140,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/profile","navId":"1787299930232-80359","to":"/platform/schools"},"durationMs":1168,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cc1d02c0-0bdf-4300-a5a7-3a7e19e0b9bb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:15","userId":null}
{"durationMs":22.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"42ce48d9-b976-4c16-a227-32010130b5a5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:23","userId":null}
{"data":{"href":"/platform/plans","navId":"1787299938799-219122","text":"Plans"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/plans","navId":"1787299938799-219122","text":"Plans","to":"/platform/plans"},"durationMs":545,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787299938799-219122","to":"/platform/plans"},"durationMs":545,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787299938799-219122","to":"/platform/plans"},"durationMs":556,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"14afbce2-bb72-4706-a14c-175db85a5b01","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:23","userId":null}
{"durationMs":17.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/support/tickets?status=undefined&priority=undefined","requestId":"507109bd-1fd1-401e-9f52-f1ad785ee7ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:29","userId":null}
{"data":{"href":"/platform/support","navId":"1787299945372-184082","text":"Support"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","href":"/platform/support","navId":"1787299945372-184082","text":"Support","to":"/platform/support"},"durationMs":622,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":"1787299945372-184082","to":"/platform/support"},"durationMs":622,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":"1787299945372-184082","to":"/platform/support"},"durationMs":681,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"94baeddf-f708-47af-8e6d-71774d48fd6f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:29","userId":null}
{"data":{"id":null,"label":"More","name":null,"type":"button"},"durationMs":47,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7a913699-7baf-48de-afbb-fd4c53c91eb9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:32","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"39e3180d-c3d0-4357-8904-2071783d3c2e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:34","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46217a82-f15d-4dad-9d75-c4dfe502e469","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:40","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":40,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4926f847-565b-4aeb-9c45-5f53dbeae978","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:41","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":56,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"937ad9f6-ad91-4e83-9f33-57a3d34497e0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:44","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"href":"/platform/dashboard","navId":"1787299962627-753767","text":"Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c1ab0af6-236c-4a41-9b10-b1d365edf35a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:46","userId":null}
{"durationMs":57.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"94e6cd5a-36b6-484c-a9ee-3a6c99a4b3d1","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:12:47","userId":null}
{"data":{"from":"/platform/support","href":"/platform/dashboard","navId":"1787299962627-753767","text":"Dashboard","to":"/platform/dashboard"},"durationMs":722,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/support","navId":"1787299962627-753767","to":"/platform/dashboard"},"durationMs":722,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/support","navId":"1787299962627-753767","to":"/platform/dashboard"},"durationMs":737,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f01f6461-dc06-4147-8415-37e88ed7cefd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:47","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":69,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:12:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"122ec998-1262-4e63-8a36-1c044a122389","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:12:52","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:15:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"08b71ffc-e105-4870-91e9-04fda6d77d31","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:20:00","totalConnections":1}
{"durationMs":2.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a6af7bd-81bb-4bbd-a1dc-c5de230e2fc3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:20:02","userId":null}
{"durationMs":1.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"350033c7-1769-4195-b398-993f4691d0d4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:20:19","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:21:00"}
{"durationMs":50.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"7a3e805c-fe95-4c38-bd16-0d2ffc9c2d98","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:21:55","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:22:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":66,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89c1edcb-bef3-4c08-a6b7-54cf63b22022","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:02","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":51,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"151d2994-c8e4-40ff-b599-7de1a620228f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:04","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":67,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5ad454c5-563f-439b-b7c7-121a3f01b821","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:11","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":71,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbbbc678-b6ff-4eea-980f-001205b40c51","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:29","userId":null}
{"data":{"href":"/platform/plans","navId":"1787300547550-302662","text":"Plans & Billing"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e72938cb-05d2-4532-a634-4146abb807ee","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:32","userId":null}
{"durationMs":18.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"12b8ec9f-bf02-4187-9a5d-78bb180c2df1","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:22:32","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/plans","navId":"1787300547550-302662","text":"Plans & Billing","to":"/platform/plans"},"durationMs":1023,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787300547550-302662","to":"/platform/plans"},"durationMs":1023,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787300547550-302662","to":"/platform/plans"},"durationMs":1034,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"68ca4274-638c-4e58-a7c0-6b65f95d77bc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:33","userId":null}
{"data":{"id":"radix-:r6:-trigger-invoices","label":"Invoices & Billing","name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"121f40b8-32a0-4233-a0a6-6e9dc8050387","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:35","userId":null}
{"durationMs":45.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"daa9f6c4-240a-4e89-8e40-d85162428da5","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:22:40","userId":null}
{"data":{"from":"/platform/plans","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:22:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"79f3b115-6d06-4221-8eae-cf1c36176385","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:22:40","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:23:00"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 11:23:49"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:24:00"}
{"data":{"id":null,"label":"Nairobi Comprehensive schoolEmbu • one-term-trialAdmin","name":null,"type":"button"},"durationMs":75,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:24:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Nairobi Comprehensive schoolEmbu • one-term-trialAdmin","name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:24:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dd92cc32-5fd1-476e-9088-c6a7a445b7be","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:40","userId":null}
{"durationMs":114.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/impersonate","requestId":"eb61e51c-5181-489f-b807-49f4a89c5f3a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:41","userId":null}
{"data":{"id":null,"label":"Open Dashboard","name":null,"type":null},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:24:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":0.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3e881675-df5b-48e0-93ee-8e7cbbc50579","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:41","userId":null}
{"durationMs":73.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3fef9bcd-4e0b-4597-89e4-c5fad420c2b6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:24:43","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":98.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8155543f-384d-4ad2-9a5c-65dc7ec17287","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:24:43","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":84.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"acd9c582-ea8a-4c54-945c-3ddab2b308f6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:43","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":200.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"870cff83-556d-4cd6-8d4e-609752ac4eac","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:24:43","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":149.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"b27f9a97-eb44-480a-976f-11311f7de88e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":147.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"f0c35ac7-6fa8-45cb-8d16-4ee40f3bea52","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":157.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"b67804c6-0df7-4d0d-b728-7c727537021d","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":39.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"d307cce4-b481-40be-b26e-847da4daf8bc","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":36.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"ba0ec5d3-18f2-4542-bb3a-c1c4552c96f6","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":64.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"824f0c14-665a-4d7d-a54d-20504358f7cf","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":61.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"1a97d023-34bd-4407-a38b-cf80345bffb0","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":57.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"abc8224e-074b-4430-ab48-5e1a920a7e9f","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1579.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1895.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1901.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1908,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":12.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"493c3c5c-a704-4869-86e9-8cdfc07e1341","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:45","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1365.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1367.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1369.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1371.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1372.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1374.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1376.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1379.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":13.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d2ddf4fc-8be1-44e8-8655-9a4a1b737b91","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:47","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":61,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:24:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":15.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f91df9a8-e0c9-4eff-ba77-56afc3872a52","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:24:54","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:25:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:25:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:25:01","totalConnections":1}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:25:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":21.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"72465520-eedf-4ba8-b487-dca4831576b3","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:25:01","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c072f67c-2c27-4fce-972d-5ee2250b5a7d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:25:01","userId":null}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","timestamp":"2026-08-21 11:25:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":14.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ecfdec10-7369-4e9d-8036-c1004ffc18f1","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:25:02","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":32,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:25:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e63c1c9c-fcb2-4adb-a068-f012127e5181","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:25:04","userId":null}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:25:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:25:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c0b8e783-c8f1-4880-97f3-9de46e9d835d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:25:06","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:27:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:27:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fe07ef35-3783-4c93-88f7-f8d722bd208a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:46","userId":null}
{"durationMs":677.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"5a867881-0dec-4ac3-8d0e-cc5294f15db8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:48","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:27:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89455bcf-522a-4155-851e-0272ca45058b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:48","userId":null}
{"durationMs":22.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"ad3e68ee-894e-4d20-b117-3667f0911f34","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"27b73498-ab95-44d0-9dcd-4fa78447a69e","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:49","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":305.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"57df39a2-1eb6-468d-9984-6323c037c99e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":298.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ebc36a0b-1e9a-473b-89aa-cf84ccc142bd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":56.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"aee7f113-3dbd-4dd7-82cf-9c4598398a88","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":164.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"9a421aef-7ed9-4ae2-8f40-b23084fde6a2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1108.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":409.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":451,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b7c3b201-ff0d-4f81-9e8f-fa064009acf8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":87.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"dddb176a-8965-44c6-b459-0b7decf63329","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"9a485b49-12a0-45ac-9030-167b903f1f89","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":378.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"24a393e1-f5d5-42b5-8b4f-c88c5275ecc7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"31ff731b-e261-48cd-961a-10562ec73545","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":78.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"649b8835-2c0b-49cc-9d88-b90ea21c60a2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"11d00fa1-0308-42e2-bb21-4170e6253ef3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:27:50","userId":null}
{"durationMs":59.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"b79a05fd-759d-4a81-82f1-bf7a7e7fe3ca","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:51","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":75.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"42dbcda5-87bc-4fe1-9f29-6feda718a369","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":82.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"0ad2e95f-8e83-479e-869c-0406f6b0d879","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":121.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"65f3c77b-8def-47e8-8e61-b1a7777edcf8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":145.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"038108ee-8cf7-403a-a2b4-9007d3b79f51","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":125.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"baf5808e-07f9-4f57-a584-6615b7201ba5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":969.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":976.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1025.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1026.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1329.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1330.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1331.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":441.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":575.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ba325a81-b132-4994-8360-cae48a284e70","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":504,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":518.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":522.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":559.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":563.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":581.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8bbba319-1b26-4a39-bcc9-461ed712601d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:52","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787300873828-236362","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6ca2221d-1074-4ba9-ac44-933ea70422c4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":92.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"093a5b34-1376-4574-b7fd-080484b9a49c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787300873828-236362","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1408,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787300873828-236362","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1408,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787300873828-236362","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1450,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:27:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"42588593-8ff4-4296-bba8-e9b5c7762cd2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:27:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"e4c5ec77-46c5-4360-8f46-b3f64c1689cc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:28:00"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":920.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"22c704c9-b582-48f1-b2bd-f56401319538","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":776.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b117adf7-5d24-4d69-8b99-e8b2281370a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,484.00","name":null,"type":null},"durationMs":58,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c9ee6d22-a0fa-4708-b419-4b327e23e205","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1497,"feeItemIds":["c71d7e60-c83f-46f5-ac6d-dcbe7afcfd1c"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21484,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-21 11:28:12"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-21 11:28:12"}
{"data":{"id":null,"label":"Pay KES 1,497 via M-Pesa STK","name":null,"type":null},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7037e52a-370b-4f76-9f22-6d8ecaed6d3b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_21082026112811751706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"c2404822-bab7-4ae0-8b31-1e686487b463","service":"cbc-sms","timestamp":"2026-08-21 11:28:14"}
{"durationMs":1656.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"59c20b84-cd7f-4413-9322-b52606382f35","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2073.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a658ced0-ffdb-4cae-902e-8dcb384bf275","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"0617d711-ef50-4d27-b03d-a13d51bc872a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":490.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cd91eef0-66e8-4bc8-9689-985c39d00263","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"322a1558-2039-43cb-81db-c5191df15f6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":470.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2fa91997-b469-453d-9ff7-2d346bbb348f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"e496cb3a-0949-45e3-a810-f0068a9640b6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":516.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3eb213ae-c379-4152-baec-4cf89855abd3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"ee415c1b-fa58-466e-bf4f-5bf1cc7ab3fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":508.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2f77538f-68dc-4b35-a3ad-9b3fab10e617","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"f335c03e-4b96-4a3c-9c40-62652f06e68e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":528.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dfad473e-2fe3-4cce-8952-87892a7a32be","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":1.98,"ip":"196.201.214.200","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"b04e9031-988c-4451-b774-a7d89e434ccc","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:28:26","userId":null}
{"durationMs":44.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"d3c00eaf-c8a5-4a36-88a3-063b5a103b29","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":437.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"617a2de8-7f62-49c0-8e11-93abcea3f7b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"a95f3c92-1f8e-4984-94d4-98f52bd51f73","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":455.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e12454d1-5df1-4995-90e4-34746f78bc5d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"1da0667b-a9b1-48ce-9df1-c7d36410d378","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":483.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"68ff9898-dd56-4ec1-b8c0-be0d98d0faf7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238","requestId":"181bf00a-a55a-40b6-a8f2-9834f56d72cc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112811751706576238"},"durationMs":482.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4d4695fe-7056-4088-8b8a-07979d8a51b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":115.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"89cbc3fb-0958-4fb5-93df-232d610901a0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":158.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"6f028db4-5641-4954-adc7-992dba64cc67","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"e7d70c97-7d49-48c2-b5c0-35e759c49bf1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":533.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":572.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ea757c0e-8133-4058-9514-ff4fbdc77f16","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":829.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"87932af9-32cf-4025-a959-2f3a263dec97","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"3916e531-29c1-4b66-af1a-ea47ed7ba94f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":85.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"25d7d30e-6f68-4aff-a4a2-0e1254ff615c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787300915775-542600","text":"Fees"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787300915775-542600","text":"Fees","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":58,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787300915775-542600","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":111,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":545.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":549.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"050a24e7-4e5d-4f5a-9f1d-c6f7d3ef2019","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,484.00","name":null,"type":null},"durationMs":56,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d036066c-bb35-48c8-ae79-a70fbcc04db0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8fe5f247-5968-47eb-aa8b-9587cefae37a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"292026d9-7fb3-468a-a293-3124b9854a65","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:28:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":505.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":510.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"379237b6-7a2f-49ac-a4fe-89ee873749ca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:52","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["c71d7e60-c83f-46f5-ac6d-dcbe7afcfd1c"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21484,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-21 11:28:57"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-21 11:28:57"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:28:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a79cbd07-2163-40e4-bb85-b097cca819ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_21082026112855511706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"ec0a6f6a-bb3f-4648-9dcb-1d71caa418c9","service":"cbc-sms","timestamp":"2026-08-21 11:28:58"}
{"durationMs":1633.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"4378b7be-95f7-4c9e-89f2-6734c7971767","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:28:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2188.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4118f846-077d-44bc-8596-f2d48fc6a4eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:29:00"}
{"durationMs":55.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"3e35f035-b07b-462b-b13e-60dc75300115","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":506.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9c4f0f05-e084-46b5-8754-b752fbab8b0f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":32.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"eb570c8d-2c02-4f6b-a31d-12b7ef1650e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":486,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3c142af8-4117-4c65-aeb8-222dbbc0727d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"82990d09-c056-4e9d-aa84-e4b4cf9fa2e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":449,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4ab7145b-a5c3-458a-90e0-c747eafdf2a9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"b7bf2a1e-b4ba-49ee-b3d5-4dac0499e24f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":538.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"49328f25-1e6e-4fa8-b1d1-05e6ba397da3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"d66f977b-cab3-491b-9ced-0916f4e02610","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":2.22,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"a009a347-5f29-40c1-8cd1-3db417422f6e","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:29:10","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":574.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e9f49f41-29e6-46d4-848f-2946d8227bbf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"a76908c1-648e-46fc-9558-d584868c1511","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":502.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f66ac683-b360-41f0-a1aa-851d6c88f6c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"6565c626-63c2-4c21-b63c-12f5f02c2b4e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":481.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01cc7006-9acd-4543-b8e7-433d5d8687ef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"42e88e36-dac5-4bbc-ae70-bcb7a1eca008","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":487.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"57a2793c-95ff-4b1f-bc4e-019a01112da3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"27319dd0-4f69-47b7-90cc-969fc552d47c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":433.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4ea88f86-8ebd-4f6b-9120-ebc90c790233","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":34.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"ec942d40-1f7e-4152-8f93-199bce907ac1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":442.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fe762081-c231-4ff8-915d-a8f303536d62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"08f47459-5cac-4d25-9cf7-0139e45eec0d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":503.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"26b26f08-adba-4a7c-ade8-f10ed993c8f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"4cf13458-c340-46d5-a47a-233bd4856585","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":462.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"61ee8170-57e4-4a41-86ce-33b516f37595","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":48.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"d838d6d4-d30e-41ab-983b-5729671b1a62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":523.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"edf8c6cb-ea33-4b34-bd43-da2e9a2de854","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"814cdfdf-ce71-44dc-8971-49e4e19e4601","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":436,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a2a660b1-c9d6-4f21-8cb9-a3fbac5e01ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"e5bb7bde-187b-40ee-a593-8d4a9b8a0284","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":445.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"485643c8-f641-40e5-9390-fc7b887615ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"28ceb789-53b9-4190-9196-bd731175816c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":740.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3e380550-a205-4292-a312-3d659da47097","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"7d8c1971-5986-4212-8650-37f582faa8cb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":461.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8903c979-e169-4767-8ecd-c21a309b921d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"078623d8-ddc0-4038-8da9-4c1545d94e39","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":442.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbaf6dc1-7967-4036-9b17-9d6ec594db53","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"93a87fd2-9d03-46a5-b938-8ece5a4edf62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":555.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a6373369-999b-4b9a-a3ca-c600a8e8c2ad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"157c6c74-ab4a-4a6b-b3ad-d15447b3d876","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":529.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0cb7f44d-f498-4b00-8916-323fbffbb76c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":44.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"7a44988c-4770-4d3d-825a-c5552c0ec3fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":54.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"f1a44ad7-f07f-48fa-9a59-d1ab3a360a07","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":1892.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":476.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e5b12f8b-297f-4fb3-b137-2c4b26338d41","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"53be46cb-e1be-41b1-9772-c81ccd0fbfe8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":426.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"367cf9cd-f6c3-43b7-ba07-890fe10f870c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":32.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"fc009be4-286d-4165-9e53-14825c36ea5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:47","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":682.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2563c951-9dad-417e-93af-49c1d357d030","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:48","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"9e52d6f2-ca8c-450a-b2f1-bfadc1daf5b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"6ce152a9-5db8-4019-a5ec-f4b9d887e24b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"5ba080d2-74f4-4217-9004-baaa619477b3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"118b3107-59c6-45a6-9596-a8f785c5f732","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":2497.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"48a17fe7-34f4-4ed0-932a-01c6bcd8161b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"1e01e053-7d38-42b2-ac2e-e8fb42379af0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":2866.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2579.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2630.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a5d283df-cd61-4ee4-8998-c5d5fc4adca7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"cbee9fc2-931c-4f7f-9341-7f3883289e76","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":1674.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":457.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"25fd28bb-7b95-402e-b9e2-0f28a865cb47","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":34.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"04bea408-528a-4648-8f8b-d6dc13223356","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:29:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":578.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:29:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"db34eba5-919c-4347-acf7-b1b914407aea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:29:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 11:30:00"}
{"durationMs":70.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238","requestId":"ed175e2c-c423-472f-9cb6-8c87c7dc5329","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:30:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026112855511706576238"},"durationMs":1497.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:30:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7ad44404-0f22-441b-b32a-4cab74546fdb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:30:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"420ae420-6651-4559-95fb-d43a3d0dded6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:30:02","userId":null}
{"durationMs":70.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a4051f56-9674-4302-9b83-6da161fe916d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:30:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":32.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"9d7d3d01-058f-40aa-a361-bb64933666ed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:30:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":546.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:30:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":877.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:30:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a05d4ba6-9e64-42ac-9b9d-c36d12006f5c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:30:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:35:00","totalConnections":1}
{"durationMs":1.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ed3ffa90-b193-4505-b6a8-ef0834c7c338","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:38:00"}
{"durationMs":62.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8e94fe65-3077-4f35-aa85-520b1dcb87dd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:38:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":56.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"159d9340-5f8d-4911-9f7b-3f36ec684873","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:38:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1467.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:38:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1225.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:38:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"98235504-68ae-419e-9a53-cb5f5e7e4683","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:38:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:40:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f5c0c09-9ecd-48d9-b98f-f2c8add7282b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:45:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9fdc0924-b043-47a0-a816-56bf63abe3fc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:46:01"}
{"level":"error","message":"SyntaxError: Expected property name or '}' in JSON at position 1\n    at JSON.parse (<anonymous>)\n    at parse (/home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/types/json.js:92:19)\n    at /home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/read.js:128:18\n    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n    at invokeCallback (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:238:16)\n    at done (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:227:7)\n    at IncomingMessage.onEnd (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:287:7)\n    at IncomingMessage.emit (node:events:524:28)\n    at endReadableNT (node:internal/streams/readable:1698:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","service":"cbc-sms","timestamp":"2026-08-21 11:46:35"}
{"level":"error","message":"SyntaxError: Expected property name or '}' in JSON at position 1\n    at JSON.parse (<anonymous>)\n    at parse (/home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/types/json.js:92:19)\n    at /home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/read.js:128:18\n    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n    at invokeCallback (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:238:16)\n    at done (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:227:7)\n    at IncomingMessage.onEnd (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:287:7)\n    at IncomingMessage.emit (node:events:524:28)\n    at endReadableNT (node:internal/streams/readable:1698:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","service":"cbc-sms","timestamp":"2026-08-21 11:46:47"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:48:00"}
{"durationMs":3.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"2639ece5-bf24-45e6-9ea9-8bdec6ae0df6","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:48:32","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:49:00"}
{"durationMs":1.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"a66f99b7-d6be-4902-a242-90babc68cc80","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:49:10","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:50:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e994c04e-1998-49c6-bbc4-97f450bfc93a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:50:02","userId":null}
{"durationMs":1.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"18830a4b-1093-458b-beca-e5a18485955d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:50:15","userId":null}
{"durationMs":1.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"6c042345-a6c4-4251-971f-254ce5cc7c3b","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:50:21","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:51:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:51:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:51:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"05bc0939-966b-49a0-988f-6caade1d1eae","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:03","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:51:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"774ce7fc-822a-4a79-aa61-44a5177d3bbd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:14","userId":null}
{"durationMs":690.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"d5730d4d-acc2-4343-becc-8941c3b19b76","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:15","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:51:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d57a59ba-2c97-4d60-b063-40847f7262d7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:15","userId":null}
{"durationMs":26.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"01b7bbc4-64e8-4191-99b4-4c28fd4306c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":26.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"e125428e-28ed-4da3-853b-63e333b53437","schoolId":"187335b9-637a-44a8-bcad-4ba1f06c3789","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:16","userId":"3e6117e3-3af5-43b0-8ed3-5dd96e224052"}
{"durationMs":351.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"c407c3b2-6bf1-4bb9-b00d-bca9180ab6b6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":373.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"058b163c-f8a7-43c0-afae-ed2027471310","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":394.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"7fcaac0d-4d6c-4e42-9d1f-998ec0b50ed5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":316.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"c1d55792-85ac-46b8-b1de-f16be0373711","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1173,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":525,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":463.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":23.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"541a4d30-c4da-444e-9323-b92ece709d60","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":105,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"a02e7733-e2aa-415b-a4d9-d85a16b95f2e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"1b662e6a-9b97-4a7a-b740-062b1fd681d0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":113.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"491b6c6a-3a5f-437c-9dbd-e10b1f9016ad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":123.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"bc462c89-10dc-4ebb-898a-c8aac3af12dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":359.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"5fa38d50-7f29-4903-b9e7-454335456c82","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":476.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"7000f59f-9449-4298-8225-b27fa169916f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1098.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1108.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1200.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":1083.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":933.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":943,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":956.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1201.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":1304.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1456,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a7d3188f-735a-4632-9c39-27fd3f5775d8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"38b215e2-c043-4c20-a6f0-dae2ee7f90ed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":67.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"6699cdee-c941-407f-8891-cb8df7ab7765","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787302278629-574517","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787302278629-574517","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":144,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787302278629-574517","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":175,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:23","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8203ee29-d340-45a9-8be2-afb1e290435b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"5ad84d50-f72d-4f7c-a68a-d0c7e85eaac7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":805.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":475.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c798c1d2-076b-4f1a-9d61-9ddccc7c3a33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,484.00","name":null,"type":null},"durationMs":58,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e6ec3ec1-3153-4333-b2e0-426b2df4ba64","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["b13011dd-a462-405a-86e5-d388cd8b466f"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21484,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-21 11:51:38"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-21 11:51:38"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:39","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8422b1a5-6b45-4f8d-a549-08dd764581fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_21082026115137510706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"7532dd41-d230-45c4-9a3e-26778d099c28","service":"cbc-sms","timestamp":"2026-08-21 11:51:40"}
{"durationMs":1682.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"8a5d1fd6-a884-4459-a833-81ba0afb5420","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2087,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2557239d-9336-4716-a02f-fec0258d3063","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"6031907b-6ba8-42de-af8e-4309e6a78444","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":560.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"88a3d763-e15f-4637-af58-455c90c9da31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"90c6b0a7-779f-4f69-89cf-ea251efdb5e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":490.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5422ae81-9d74-47e3-b048-9eabe0dfe3ed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":58.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"a17765b5-7546-4835-94e9-305d43991704","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:47","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":494.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fa7634f5-1e63-4f3c-9aef-7b6cd856b312","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:48","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"cd906431-de4f-4da6-b0a3-d8c97243d578","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":471.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:50","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"24b3e8f2-9c3f-4104-afff-a35a2a57dc6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":1.31,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"5103132b-deed-490f-90e3-d730edef26f6","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:51:51","userId":null}
{"durationMs":29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"580b4c09-70d8-4e02-af3b-ea6aac75a842","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":462.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2574e7eb-96da-407a-a4f9-c2412f9c1a62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:52","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"59c0ad05-469f-40a3-a9e0-3f898ed477bd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":411.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"77216f9b-2c17-4122-aafe-3173ecd89bdd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":34.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"b0c7da4a-947a-4ef0-a55f-fd16ddc08ac9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":412.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0dc1d148-44b0-41b6-917b-97ab6df4264a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:56","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"628720be-3629-4e5b-b2aa-9f2c7ad87a9e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:57","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":509.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:51:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d1f9e235-4d44-414a-bbf1-145539348078","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"e508b0f8-8499-4033-a2a9-4432cc06e6ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:51:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":433.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"153ebbca-331c-4588-bf57-44897ecbdf16","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:52:00"}
{"durationMs":27.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"5475e32f-c2ee-414a-a7b2-afaecc4f9c86","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":422.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ad4ff320-acb6-48e8-820b-34a233ede48d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":83.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"045da6ba-f089-4a89-8afc-0ddbe67fb734","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":473.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e69d3262-1114-4ef7-8cae-829c76e3dbb7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":30.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"17587a2b-ed34-4348-8d1b-797881c68881","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":429.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f7658b1f-edd2-4392-bf9d-886091b4addb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"161dfbb0-1dc3-47aa-a39e-b38adf7db2ef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":469.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6a8efc36-a09a-4778-9e06-99da9c3a519a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"1ec79cf0-d598-4f5d-beba-ac6c9dc0b528","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":645.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a479e040-37ba-4244-a0cc-b8691a16499c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"e045668b-9f7f-40fc-9f32-2dd823940df0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":451.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0bcf5b12-2741-4f08-b9a0-b943eed61ea8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"d8009a9e-9bae-472c-8e70-1aeb313f6a5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":498.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"be1664ca-adc1-4189-9abf-859c77b7618e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"2c6c01ab-3b2c-463e-baac-89fd497b54ff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":496.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2f1f81ba-a8cf-4ff7-b8f6-0ba8b13cd76d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"19032268-d5c7-4acc-ae69-e286e1264417","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"23e3eba2-995d-4ee9-af8e-4511f1ccb1ec","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":27.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"97aa90ea-7e34-4ef3-9103-410d7d6a03ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":408.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":451.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":461,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fcdf509d-3c7a-4c20-9305-3d87dc869659","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"7c961f01-49e8-4bc3-9c0e-9e4895ab55e1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":617.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8650c76f-a36e-47ac-8c70-4e644a27acaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"849182fa-47ef-4820-b16e-3faebaf2db0a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":484.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"91b7e29d-2afd-44cc-b650-364e2fe8d4ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"676e2da8-845e-4c8e-8ed2-ce88a01bdf9b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":434.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4b9eb295-77f9-4d8c-8286-8cf8ee788160","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":132.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"487fe680-4c1e-4a45-9c08-542e5824c104","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":569.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7fbd5367-3c4a-43d4-9b6a-76ee6d484c32","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"699cc9fd-9c4a-497e-8910-19b77ed9b12d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":594.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c9b59289-3ccb-4b9b-ac73-1f0ebfead286","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"dac2b2b9-a46b-4060-a053-a8d6bee894fa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":436.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"130af3c7-5ec4-4589-ae00-0fb13ede3bf5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"e852944f-46de-491d-8ff1-759416b3a382","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":485.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7423437e-1f41-4e6e-a734-fd49225efd36","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"03588704-b657-49be-90e8-edd3a75e1d3a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":438.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9543d14a-195e-4116-86d1-ba8126ac6a75","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"195bbb29-9c8d-464e-bc21-80223d9a9f48","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":477.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"31aac68c-b2c1-4431-aba5-5a776c065f33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"4378c3dc-96dd-417a-82f3-1ca1194888a4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":458.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01db8ccb-2fc8-4d42-9e80-ef0c2d4d8b1f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":30.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"26dc5674-e88a-4ef7-a58c-568a2e98c823","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":444.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"16a63ab0-e5c0-4ccc-b908-1e80acf8054b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238","requestId":"9d4bde7b-97b3-4ca9-a666-c7f1fb9a8189","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:52:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026115137510706576238"},"durationMs":725.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:52:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"241ec753-30c2-450c-863c-89477ac4cf40","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:52:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:53:00"}
{"durationMs":71.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"a4b78164-5b81-4b02-8f21-61b090d7c53e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:53:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":78.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"9eb3bd64-3e5c-4409-882e-7db1e4cdbfaa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 11:53:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":489.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:53:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":513.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 11:53:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bdb874e7-595e-4f74-a7aa-151a758f322b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:53:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/platform/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:53:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:53:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ce93f23f-f60c-4f62-83ed-b6b158d1093f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:53:56","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:54:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"527e865c-4aee-4ef9-b96d-a56592df5b55","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:12","userId":null}
{"durationMs":553.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"6b004739-680a-4493-bb79-891024797e81","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:12","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"efe912f2-4cb8-459b-a91a-48af33b02133","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:13","userId":null}
{"durationMs":48.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"c337c732-be17-4b22-9afd-94710ff44dbe","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:13","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ead6e069-8bd0-4670-959d-adec3dbe2fda","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:14","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e68d870f-ea98-4683-9b52-ff699fa831a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:19","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9ee37c94-092c-4e71-b092-991f664faaf3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:20","userId":null}
{"durationMs":35.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"285ed2d3-748b-4e36-a297-bb99b2190554","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:27","userId":null}
{"data":{"href":"/platform/schools","navId":"1787302463944-890863","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/schools","navId":"1787302463944-890863","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":447,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787302463944-890863","to":"/platform/schools"},"durationMs":468,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4e1585e8-a5c7-46c2-86b0-f9e4794ee75f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:27","userId":null}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-21 11:54:32"}
{"durationMs":13.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"085928aa-5729-4c10-a83f-6cda6ac072bc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:32","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787302468532-974528","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/payment-integration","navId":"1787302468532-974528","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":456,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787302468532-974528","to":"/platform/payment-integration"},"durationMs":491,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"412f2ca9-0d83-40a7-84b1-ef16f0fef114","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:32","userId":null}
{"durationMs":25.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants","requestId":"e2c0cf14-1a6a-44b9-aa96-ba5aaebe675f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:34","userId":null}
{"durationMs":9.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/banking/banks?isActive=true","requestId":"30518c4f-4d1d-4bea-9e0e-d3366516789d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:34","userId":null}
{"level":"info","message":"[Payment Config] GET school-settlements request received from user:","service":"cbc-sms","timestamp":"2026-08-21 11:54:34"}
{"durationMs":8.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/school-settlements","requestId":"06c8fcb6-6923-43d2-aab1-2ac417d5e147","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:34","userId":null}
{"data":{"id":null,"label":"School Settlements","name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/banking/banks"},"durationMs":485.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 11:54:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bf1f65cb-730e-4895-9f79-a2c506ed1652","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:54:35","userId":null}
{"level":"error","message":"SyntaxError: Expected property name or '}' in JSON at position 1\n    at JSON.parse (<anonymous>)\n    at parse (/home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/types/json.js:92:19)\n    at /home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/read.js:128:18\n    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n    at invokeCallback (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:238:16)\n    at done (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:227:7)\n    at IncomingMessage.onEnd (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:287:7)\n    at IncomingMessage.emit (node:events:524:28)\n    at endReadableNT (node:internal/streams/readable:1698:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","service":"cbc-sms","timestamp":"2026-08-21 11:54:59"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 11:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 11:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 11:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 11:55:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"748c19dd-e940-4a38-a463-19688c9e96e4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 11:55:02","userId":null}
{"level":"error","message":"SyntaxError: Expected property name or '}' in JSON at position 1\n    at JSON.parse (<anonymous>)\n    at parse (/home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/types/json.js:92:19)\n    at /home/aereuxky/cbcsms-backend/node_modules/body-parser/lib/read.js:128:18\n    at AsyncResource.runInAsyncScope (node:async_hooks:206:9)\n    at invokeCallback (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:238:16)\n    at done (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:227:7)\n    at IncomingMessage.onEnd (/home/aereuxky/cbcsms-backend/node_modules/raw-body/index.js:287:7)\n    at IncomingMessage.emit (node:events:524:28)\n    at endReadableNT (node:internal/streams/readable:1698:12)\n    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)","service":"cbc-sms","timestamp":"2026-08-21 11:55:15"}
{"durationMs":1.05,"ip":"102.212.247.98","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"c8b66c5b-5834-4f38-935f-97893763f057","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 11:55:58","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:57:00"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-21 11:58:02"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-21 11:58:10"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"[Payment Email Catch-Up] Initializing (interval: 120000ms)...","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✓ [Payment Email Catch-Up] Job active","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 11:58:11"}
{"durationMs":40.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"8e058fdf-c4c1-4a22-bc09-8e6c9c11d901","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 11:58:50","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 11:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 3 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:00:00","totalConnections":1}
{"durationMs":10.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2d9af5a7-7b99-4882-a883-bdec8d011c6e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:01:00"}
{"durationMs":134.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"06d6e490-7e3d-44e0-9be9-2c3f72dcab1b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 12:01:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":114.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"f155fa2a-0836-467a-a99d-d19181cd4d6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 12:01:50","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1475.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 12:01:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1347.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 12:01:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 12:01:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f968ddf7-78db-4bd2-9236-11234452f8c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:01:51","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:05:00","totalConnections":1}
{"durationMs":3.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9ae9cefd-8913-447a-bcdf-31be6dacbd20","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:10:00","totalConnections":1}
{"durationMs":3.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"abc10822-30ac-4dc1-bed4-30e3cdcaa23c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:15:00","totalConnections":1}
{"durationMs":3.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0bbdffd4-768a-4d1b-a0d8-e959a9204a5d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:18:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:20:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e8368c1b-43e9-4541-bca5-03096559fe4c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:25:00","totalConnections":1}
{"durationMs":8.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a3412265-6bf5-4495-93a3-0dc82ab768da","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 12:30:00"}
{"durationMs":3.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c8da828e-97f3-4595-93c7-72d6222ba003","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:35:00","totalConnections":1}
{"durationMs":4.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a8b633a3-9e50-4df9-8d30-acc930e2cc53","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:40:00","totalConnections":1}
{"durationMs":4.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9cd154a6-2237-44e9-8b50-f51c5b983fed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:42:00"}
{"durationMs":3.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4dc7b68b-3659-4428-8270-98935986cff2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:42:21","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:45:00","totalConnections":1}
{"durationMs":2.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ece822fb-1f15-4563-8a49-9c0fa7fd65b0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:50:00","totalConnections":1}
{"durationMs":2.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"999debb2-8f1a-4d35-b393-9cc350600af1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 12:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 12:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 12:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 12:55:00","totalConnections":1}
{"durationMs":3.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"22aec5d4-83a8-4db9-930d-f9c3a8867451","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:55:01","userId":null}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-21 12:54:59"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"Port 5000 is busy, trying 5001...","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"⚠️  Port 5000 was busy, using port 5001 instead","service":"cbc-sms","timestamp":"2026-08-21 12:55:01"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"[Payment Email Catch-Up] Initializing (interval: 120000ms)...","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✓ [Payment Email Catch-Up] Job active","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5001","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 12:55:02"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:56:00"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-21 12:56:42"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-21 12:56:44"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-21 12:56:44"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"Port 5000 is busy, trying 5001...","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"Port 5001 is busy, trying 5002...","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"⚠️  Port 5000 was busy, using port 5002 instead","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"[Payment Email Catch-Up] Initializing (interval: 120000ms)...","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✓ [Payment Email Catch-Up] Job active","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5002","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 12:56:45"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:57:00"}
{"durationMs":3.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e8684c2c-213c-4bf4-96d0-5f11b01d7626","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:57:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:58:00"}
{"data":{"from":"/platform/payment-integration","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:58:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:58:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7463f8fd-292a-4471-b7db-29f54c80918d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:58:49","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 12:59:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c6d5a0f1-7d2d-4e4b-a757-d96043c2d49a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:05","userId":null}
{"durationMs":638.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"f8ec08c6-241b-4a68-a5e8-01f3713d4a0f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:05","userId":null}
{"durationMs":53.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"7737bfaa-f66b-4068-9e94-ef212f7d1be2","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 12:59:06","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"65a27d5e-d413-494f-8701-42aceb68ed3e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:07","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787306347451-609407","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f9372e64-4fd5-4917-86c2-ee8365d470cc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:11","userId":null}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-21 12:59:11"}
{"durationMs":16.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"7ca83c5a-72ca-4718-9f71-2b13c8e8e432","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 12:59:11","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/payment-integration","navId":"1787306347451-609407","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":820,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787306347451-609407","to":"/platform/payment-integration"},"durationMs":820,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787306347451-609407","to":"/platform/payment-integration"},"durationMs":853,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f63e59d-a338-4c65-910a-5a64629908ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:12","userId":null}
{"durationMs":7.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"2d56ade8-9483-4b49-914f-6ec67380c02e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 12:59:14","userId":null}
{"data":{"id":null,"label":"Callbacks & Failed Payments","name":null,"type":null},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 12:59:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46a62a32-2c2e-44a8-884e-4ec832304d94","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 12:59:14","userId":null}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 13:00:00"}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"136917cb-0d70-4aca-82cd-ddca5ba15be2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:00:02","userId":null}
{"data":{"id":null,"label":"Sandbox Config","name":null,"type":null},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b4b32aec-fa0a-4aab-a550-b8ca3f94d470","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:00:48","userId":null}
{"durationMs":60.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"805e1bd7-2c77-4715-9262-f63996128ee8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:00:49","userId":null}
{"data":{"href":"/platform/school-portals","navId":"1787306445543-694147","text":"School Portals"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","href":"/platform/school-portals","navId":"1787306445543-694147","text":"School Portals","to":"/platform/school-portals"},"durationMs":399,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/school-portals","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","navId":"1787306445543-694147","to":"/platform/school-portals"},"durationMs":444,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/school-portals","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5d462287-7c3b-4060-9038-ffc21e5f3aa8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:00:49","userId":null}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-21 13:00:51"}
{"durationMs":8.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"81c3d407-1a53-43a1-b1f4-4dece32bf610","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:00:51","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787306448573-916343","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/school-portals","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/school-portals","href":"/platform/payment-integration","navId":"1787306448573-916343","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":10,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/school-portals","navId":"1787306448573-916343","to":"/platform/payment-integration"},"durationMs":43,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"00dddccf-bae7-4530-83ee-85c46d732e0c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:00:52","userId":null}
{"durationMs":11.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"210cfa18-e957-4699-b4e2-0f6070e32d9e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:00:53","userId":null}
{"data":{"id":null,"label":"Callbacks & Failed Payments","name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:00:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89654dc2-c171-40ad-8a2b-b1ce353d6b7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:00:54","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:01:00"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-21 13:01:51"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-21 13:01:51"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-21 13:01:51"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 13:27:19"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 13:27:46"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-21 13:28:09"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"[Payment Email Catch-Up] Initializing (interval: 120000ms)...","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✓ [Payment Email Catch-Up] Job active","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-21 13:28:11"}
{"durationMs":16.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/health","requestId":"a602b983-8c75-4a7f-aad9-0addac9e670f","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 13:28:33","userId":null}
{"durationMs":3.12,"ip":"102.212.247.98","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/health","requestId":"31c34afc-d2bb-44f6-ba30-ea8c9a703462","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 13:28:33","userId":null}
{"durationMs":682.15,"ip":"102.212.247.98","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"5426e9a9-7128-4981-a76e-fd8024762b84","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 13:28:53","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 0 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:30:00","totalConnections":1}
{"durationMs":14.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4da01a67-871b-4e2a-93ba-ea87968ccafe","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:30:02","userId":null}
{"durationMs":6.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a47368e4-487c-4d3b-881e-4b9a5ff77c89","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:30:24","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b2ee3e66-de61-4977-97f8-bf07c6316d76","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:30:54","userId":null}
{"durationMs":575.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"28a616f2-b26e-4d17-9da4-a7193fb2b51a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:30:55","userId":null}
{"durationMs":54.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"1053c590-65d3-4d3e-a9fc-f28ce3562d47","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:30:56","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":5.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d93a8ab6-33bd-433c-abe7-1a36a9b0ec5f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:30:56","userId":null}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-21 13:30:58"}
{"durationMs":13.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"02f070be-287d-403d-a7bb-84143ed586ef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:30:58","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787308255674-337997","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/payment-integration","navId":"1787308255674-337997","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":24,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787308255674-337997","to":"/platform/payment-integration"},"durationMs":83,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:30:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":5.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"195ec70c-f6bd-45f0-98ce-7740b6501023","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:30:59","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:31:00"}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:31:00"}
{"durationMs":74.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"22564eb2-4fca-49f3-a274-759311a8449b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:00","userId":null}
{"data":{"id":null,"label":"Callbacks & Failed Payments","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:31:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b766a8df-8b7c-40c8-8b1e-65799e3f1b01","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:01","userId":null}
{"level":"info","message":"[Payment Config] POST recheck mpesa transaction:","service":"cbc-sms","timestamp":"2026-08-21 13:31:24"}
{"checkoutRequestId":"ws_CO_21082026115137510706576238","level":"info","message":"[Platform Payment] Querying Safaricom Daraja STK Push status:","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:31:24","transactionId":"7532dd41-d230-45c4-9a3e-26778d099c28"}
{"data":{"id":null,"label":"Re-check","name":null,"type":null},"durationMs":100,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:31:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":5.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"29cb15e3-a314-4275-a893-a906d997e597","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:24","userId":null}
{"level":"info","message":"[Platform Payment] Safaricom query response:","responseCode":"0","resultCode":"0","resultDesc":"The service request is processed successfully.","service":"cbc-sms","success":true,"timestamp":"2026-08-21 13:31:28"}
{"durationMs":4220.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/payment-config/mpesa-transactions/7532dd41-d230-45c4-9a3e-26778d099c28/recheck","requestId":"4c366bdf-917f-4ff3-961b-05425003c1e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:28","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:31:28"}
{"durationMs":84.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"bbfb44d2-199e-4a72-b218-d126eb18281f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:28","userId":null}
{"level":"info","message":"[Payment Config] POST recheck mpesa transaction:","service":"cbc-sms","timestamp":"2026-08-21 13:31:47"}
{"checkoutRequestId":"ws_CO_20082026205859042706576238","level":"info","message":"[Platform Payment] Querying Safaricom Daraja STK Push status:","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:31:47","transactionId":"ee44fbd4-e049-4ffa-bb27-c2167bf7cffc"}
{"data":{"id":null,"label":"Re-check","name":null,"type":null},"durationMs":95,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:31:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"18352ae3-0a0e-45d1-a193-f54940870986","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:48","userId":null}
{"level":"info","message":"[Platform Payment] Safaricom query response:","responseCode":"0","resultCode":"0","resultDesc":"The service request is processed successfully.","service":"cbc-sms","success":true,"timestamp":"2026-08-21 13:31:50"}
{"durationMs":3439.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/payment-config/mpesa-transactions/ee44fbd4-e049-4ffa-bb27-c2167bf7cffc/recheck","requestId":"668b04f7-8e1a-4b9c-9acc-c8b970a154e8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:50","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:31:51"}
{"durationMs":33.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"965750c0-bc84-4035-9872-c9afe0df0118","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:31:51","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:32:00"}
{"level":"info","message":"[Payment Config] POST recheck mpesa transaction:","service":"cbc-sms","timestamp":"2026-08-21 13:32:03"}
{"checkoutRequestId":"ws_CO_21082026112855511706576238","level":"info","message":"[Platform Payment] Querying Safaricom Daraja STK Push status:","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:32:03","transactionId":"ec0a6f6a-bb3f-4648-9dcb-1d71caa418c9"}
{"data":{"id":null,"label":"Re-check","name":null,"type":null},"durationMs":95,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a9e6258a-3b15-4535-b563-a7775d8526ac","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:04","userId":null}
{"level":"error","message":"[Platform Payment] Safaricom query failed:","service":"cbc-sms","timestamp":"2026-08-21 13:32:07"}
{"durationMs":3334.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/payment-config/mpesa-transactions/ec0a6f6a-bb3f-4648-9dcb-1d71caa418c9/recheck","requestId":"57ec2179-ea7f-404b-8862-48dda874c0d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:07","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:32:07"}
{"durationMs":35.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"2f9ca90d-9e43-4847-a88b-d7aac38eb6eb","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:32:07","userId":null}
{"level":"info","message":"[Payment Config] POST recheck mpesa transaction:","service":"cbc-sms","timestamp":"2026-08-21 13:32:14"}
{"checkoutRequestId":"ws_CO_21082026112811751706576238","level":"info","message":"[Platform Payment] Querying Safaricom Daraja STK Push status:","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:32:14","transactionId":"c2404822-bab7-4ae0-8b31-1e686487b463"}
{"data":{"id":null,"label":"Re-check","name":null,"type":null},"durationMs":92,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":4.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3bfd0738-f5f1-4083-bbc3-3163c209704c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:15","userId":null}
{"level":"info","message":"[Platform Payment] Safaricom query response:","responseCode":"0","resultCode":"1032","resultDesc":"Request Cancelled by user.","service":"cbc-sms","success":true,"timestamp":"2026-08-21 13:32:16"}
{"durationMs":1747.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/payment-config/mpesa-transactions/c2404822-bab7-4ae0-8b31-1e686487b463/recheck","requestId":"a875ad06-7a88-4b06-a5ed-b2c9a71150ef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:16","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:32:16"}
{"durationMs":34.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"8101637c-0fcb-4e1a-af20-3da6792c150f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:16","userId":null}
{"data":{"id":null,"label":"Sandbox Config","name":null,"type":null},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f9ac4adb-82fb-4996-a7e3-6a99390bf548","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:33","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:32:34"}
{"durationMs":31.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"b0677e29-220d-49c3-9dbe-754af9800300","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:32:34","userId":null}
{"data":{"id":null,"label":"Callbacks & Failed Payments","name":null,"type":null},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0e1c9bc7-652f-4bf6-9e12-5e16b202e006","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:34","userId":null}
{"data":{"from":"/platform/payment-integration","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:32:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71100209-2d20-4738-9181-debe788555ca","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:32:47","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:33:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:33:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f74f39bf-f323-4251-8fdc-9907fec3f578","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:01","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:33:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"11212a82-2458-46fa-b423-0842715e6bf9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:02","userId":null}
{"durationMs":947,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"881da1e1-5330-4d64-a9e7-cee7f0cb15d5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:02","userId":null}
{"durationMs":28.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"917586fe-3d10-42b6-a9c8-fac47cb34c94","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1360.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"02a982f5-c1f8-4532-9b11-19fed372363a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"83f0141e-501b-4173-952d-0197d2ed7417","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":100.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"bf686642-2ac7-45d9-890b-17f4ee3af616","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"91abf389-a5ee-4426-8628-aed62962b16d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":186.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"7a0968c6-3d5e-4532-81c0-38ce5018dd1f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":185.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"4e0b6682-5edc-489a-ad6a-bff9ebc3183f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":44.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"7c70ba6c-b8f4-4873-ad27-3c98c3db4de1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"54623d56-4e80-4f37-b0bb-fa61cb0b8613","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":959.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":478.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":507.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":841.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"96ca2080-722b-4494-a652-b981d54338b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":61.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"6a5310b4-9d9e-4f3f-9367-e2cb3b10953b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":70.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"ee15b2ac-a75f-426d-9de1-382a7b999ec4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":117.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"a1732563-7eeb-4934-85c0-3ee2e41792de","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"0869c3d2-9311-4df9-b477-ba0ed25770db","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":60.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"2eac6689-b88b-44c8-8359-1944d01fde81","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"38a5a885-09b8-42fa-a511-960fd97f6351","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"472855dd-e885-4b0a-9f88-49f8c8c98a63","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":999.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1066.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1228.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1229.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1399.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":479.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":536.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b52d8020-b564-4d23-bcec-1afdd30af992","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":65.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"8ccc3555-1a0a-4c99-b64e-4079dfada9f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":537.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":548.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":548.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":823.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":929.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9b953e92-2b06-4d7a-96c7-71cf6dff2162","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":116.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"87d2e501-9cf5-4ad7-b7f2-0e14e09f2bfc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787308387558-960138","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787308387558-960138","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":427,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787308387558-960138","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":437,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a46d43cb-9fae-4dc3-bc0a-39b988ab27f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"74af7bcb-5a70-471a-910f-088809f0ab44","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":526.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":506.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b321b03a-c5c0-4cf9-af5b-baf2ebad7159","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,482.00","name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:33:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c1a66871-db20-4b04-a9ec-9b874018158e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:33:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:34:00"}
{"durationMs":53.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"11d70b57-d3d9-4f47-9372-9d712ec9e1ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":59.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"58f8aada-53d2-43b2-b63a-7b20368dd2b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":649.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":651.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6ab9e586-d633-49de-b930-b540905e9b2e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["e9e98edd-2d21-4df1-a5ce-26239e5ca791"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21482,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-21 13:34:27"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-21 13:34:27"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":60,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"891b7c4e-855e-4d2c-afbe-62adb790574b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_21082026133425632706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"43aa8531-56e4-4b2f-bedd-de22f3781ba7","service":"cbc-sms","timestamp":"2026-08-21 13:34:28"}
{"durationMs":1642.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"7f602c53-76d1-4ca2-bfd8-0180b9b31769","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2006.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e2ffbfd9-4a48-42c5-8033-c7f07f06289e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":65.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"7e6eeed5-a2a7-4f87-979a-dd00b05e683e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":1029.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3127621c-fd97-44ab-9eab-55e385e6b6c7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"1acef60d-e707-4c41-95af-d9b85a616ca7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":491.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1bdcb483-02b1-4b55-a467-773a9e7a4450","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"fefe1b57-ed99-4e9d-9be6-44cf5642c2a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":472.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7ba78e94-a281-4206-9205-fabed7e981f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"a1f79165-4aaf-4662-adb6-2fadfb272b9f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":512.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e6a9463a-5681-4862-8f66-dd0621c668fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":44.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"fccec003-0a4d-4bfb-93c6-476d042950ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 13:34:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.92,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"e4129f26-e791-4f0f-abaf-40fa052b647a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:39","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":510.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c00eb36f-f665-4f1c-896a-8dd33997ae51","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238","requestId":"a7173722-b206-4d10-ba00-a67e6fbc261e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_21082026133425632706576238"},"durationMs":445.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2ab4ebdf-0eb9-46e8-b511-b066403700d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":85.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"88543578-4f2e-44e4-8d91-9fdf167e374d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":745.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 13:34:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c0b00902-c219-435b-9b11-08008d2c5e64","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:34:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:34:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c6608be-3b5c-4630-b038-6863bbc16626","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:34:59","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:35:00","totalConnections":1}
{"durationMs":4.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"de1481b1-08bf-478a-a206-b6849aff3191","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:39:01"}
{"data":{"href":"/platform/payment-integration","navId":"1787308780454-530249","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"05608d71-fb36-4a98-aa8e-a3247244c277","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:44","userId":null}
{"durationMs":7.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"a5cc0561-e8af-4974-b132-2c12511a3418","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 13:39:45","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/payment-integration","navId":"1787308780454-530249","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":1808,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787308780454-530249","to":"/platform/payment-integration"},"durationMs":1808,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787308780454-530249","to":"/platform/payment-integration"},"durationMs":1867,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cad84ff8-3df5-4e3d-b0c3-aa5317e9d428","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:46","userId":null}
{"data":{"id":null,"label":"Sandbox Config","name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"836aff5b-a9c8-432e-b00b-757109c9058f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:47","userId":null}
{"data":{"id":null,"label":"Production Config","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"65725f5d-efb9-41ac-ac7f-a11acbb5c398","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:49","userId":null}
{"data":{"from":"/platform/payment-integration","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0c4976ab-796f-4b95-9b89-8f8feb89ada4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:54","userId":null}
{"durationMs":550.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"22451cb9-ac82-4402-9c5a-41ce7c068353","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:55","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fc28002c-32cf-4ee2-9546-9e58d85e0512","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:56","userId":null}
{"durationMs":61.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"9236dfe8-4f9a-459e-8409-fcd38a1b6073","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:58","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b7ab4110-1b89-4fd6-a5d1-92ac5f67c6c8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:58","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787308795984-604349","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:39:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1dcfce5b-47c1-4a13-a430-c06007c1c775","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:39:59","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:40:00","totalConnections":1}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-21 13:40:00"}
{"durationMs":14.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"8a6cb109-b948-4f8d-9a9a-e17deed99f1c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:40:00","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/payment-integration","navId":"1787308795984-604349","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":1388,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:40:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787308795984-604349","to":"/platform/payment-integration"},"durationMs":1388,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:40:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787308795984-604349","to":"/platform/payment-integration"},"durationMs":1411,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:40:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4f3c5083-6c64-413c-b7af-979202a83527","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:40:01","userId":null}
{"level":"info","message":"[Payment Config] GET mpesa-transactions requested by user:","service":"cbc-sms","timestamp":"2026-08-21 13:40:01"}
{"durationMs":75.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/mpesa-transactions","requestId":"17269a0d-cde2-47ea-a776-7f1ac24955c5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:40:01","userId":null}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8aa8f928-c665-4d1a-99cb-701c546c73d4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:40:02","userId":null}
{"data":{"id":null,"label":"Callbacks & Failed Payments","name":null,"type":null},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 13:40:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5eaf77d9-f5f2-4c9a-b980-483b251f1fee","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 13:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:45:00","totalConnections":1}
{"durationMs":3.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79f25804-3993-400a-8f32-f84204d01c7a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:50:00","totalConnections":1}
{"durationMs":4.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be5a209b-2d8b-4f6b-9966-7dd9e090a0d5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 13:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 13:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 13:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 13:55:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f797522-d961-43c3-b060-3fa71dba25ee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 13:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 13:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 14:00:00"}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0a7350b4-0145-4890-847a-0ca82fab44c5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 14:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787310000225-BR9N6 (15c1b58c-d187-4345-ac2b-e81d1ff0d74f)","service":"cbc-sms","timestamp":"2026-08-21 14:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787310000253-1BC49 (2e3fb3a3-b232-4db4-97fb-4f94a12520e2)","service":"cbc-sms","timestamp":"2026-08-21 14:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787310000242-87QLW (935ed150-f974-4026-b47c-48923616c41f)","service":"cbc-sms","timestamp":"2026-08-21 14:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 14:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:05:00","totalConnections":1}
{"durationMs":3.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1096e4c-56ef-441c-90a3-28d6c4d744ab","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:10:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f77644cc-72a8-42b5-9cef-d33b7548daa0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:15:00","totalConnections":1}
{"durationMs":3.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"04cd3a84-9316-4c64-9c0d-5d9ed97620a8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:20:00","totalConnections":1}
{"durationMs":2.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43c7606f-9b5d-4cee-81c9-8839d7e1cc23","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:22:00"}
{"durationMs":4.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f9d89811-597a-4d8e-a9dd-b184cbfe81fd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:22:00","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:25:00","totalConnections":1}
{"durationMs":3.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c009f48a-0a02-4088-a57b-3665d22e4c58","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 14:30:00"}
{"durationMs":2.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0b99fb93-c1c8-40c9-ac6b-347d02c1a567","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 14:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787311800792-Q6YOX (1d228b7a-d8de-47f8-8614-d9b0a93b85e3)","service":"cbc-sms","timestamp":"2026-08-21 14:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787311800777-CT57B (79c1bec4-4823-4fb9-9040-8bc0ed2b4135)","service":"cbc-sms","timestamp":"2026-08-21 14:30:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787311800668-6NN4L (a5915cc4-19c0-4a89-8b32-6f8e6e8e9bba)","service":"cbc-sms","timestamp":"2026-08-21 14:30:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 14:30:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:35:00","totalConnections":1}
{"durationMs":3.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a4da6823-9d45-48ed-b4eb-612384f00eaf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:37:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:40:00","totalConnections":1}
{"durationMs":2.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8857ef3a-f8aa-4fbc-880c-e7cec6d0d9e9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:45:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5e2c2659-421e-4596-8fb9-213a91529776","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:50:00","totalConnections":1}
{"durationMs":3.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"38817866-bd3f-4632-998e-2f80ed9d0aca","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 14:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 14:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 14:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 14:55:00","totalConnections":1}
{"durationMs":2.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6fa8cae6-12c6-407a-9389-4b80f31d2a58","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 14:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 14:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 15:00:00"}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"752d9751-6f17-4d4e-accf-a00a1ac8dac3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 15:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787313600208-7F3JG (4e9775e0-fb43-417f-9881-57b892640fdd)","service":"cbc-sms","timestamp":"2026-08-21 15:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787313600188-H8QD0 (5f537902-953a-420c-a1fd-c6455fcafe40)","service":"cbc-sms","timestamp":"2026-08-21 15:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787313600217-BUDHG (a9359f79-99a6-49d4-8bc0-bf7341a323b6)","service":"cbc-sms","timestamp":"2026-08-21 15:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 15:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:05:00","totalConnections":1}
{"durationMs":4.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f1f21b8b-f982-4ed2-a6aa-23d4d7439c67","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:10:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0c47a7e6-869c-40d2-aa49-b3d3c7c29feb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:15:01"}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e7187b7-bb70-429c-8662-9c7777dfa2e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:20:00","totalConnections":1}
{"durationMs":2.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"df91df5e-3f66-4484-bd9f-4a234b761311","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:25:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e0d1c609-df83-46f2-aad7-2248cb2ac1b9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 15:30:00"}
{"durationMs":2.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5839a978-ac77-400d-a7a0-04ad4e318585","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 15:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787315400733-N0ZBE (4e38c450-6e2b-436c-800a-0174970010b2)","service":"cbc-sms","timestamp":"2026-08-21 15:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787315400724-0JAB9 (934d2077-2d91-4451-a4cc-a763f3f89b1d)","service":"cbc-sms","timestamp":"2026-08-21 15:30:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787315400706-XH1XE (9544dcf7-c9d9-44ba-8cf7-e77b5d3d62e0)","service":"cbc-sms","timestamp":"2026-08-21 15:30:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 15:30:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:35:00","totalConnections":1}
{"durationMs":3.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c27f28fb-9c0f-4a3c-a08f-7a7f2bd62b26","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:40:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ce37e80b-2905-48a8-a4f9-624b863ebd99","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:45:00","totalConnections":1}
{"durationMs":3.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c8c64940-d6a3-4fec-9282-244dea46808f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:50:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2c106d44-8039-4ce1-af9d-ee104fbd0d41","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 15:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 15:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 15:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 15:55:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3a233503-d49c-44cc-8d76-b29a867260e7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 15:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 15:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 16:00:00"}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"75ce4683-fec6-4df3-989f-59e311f69666","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 16:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787317200327-OYELS (e9eb5c6d-f6b6-4ea0-ad5e-d66f03f1691f)","service":"cbc-sms","timestamp":"2026-08-21 16:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787317200292-7A1DG (e93c9137-05c6-4336-8306-3425c096f007)","service":"cbc-sms","timestamp":"2026-08-21 16:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787317200317-963QG (c1fd1d4e-cd42-4b36-a3fb-a9f031e9e84a)","service":"cbc-sms","timestamp":"2026-08-21 16:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 16:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:05:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3127eb6f-5b21-4977-847e-a83404197d59","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:10:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2fe344b2-3c89-4edb-8cb3-fcbb92bf91c0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:15:00","totalConnections":1}
{"durationMs":2.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"395020f3-1a73-4512-bc1a-9905489c5ac6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:20:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0e43c235-5e28-4aed-ba6b-9d06267273cc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:25:00","totalConnections":1}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6bf3b93b-c235-490c-a1ef-527205c979c6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 16:30:00"}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"55c88087-b87b-4f3c-9242-ae9eb02fda42","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 16:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787319000760-W4658 (48bc6f70-ac39-4a7f-8dee-aa192f207fe4)","service":"cbc-sms","timestamp":"2026-08-21 16:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787319000752-XXULJ (51d95406-9db0-481f-8d9f-93d3341fe460)","service":"cbc-sms","timestamp":"2026-08-21 16:30:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787319000734-8TTCZ (da21af32-8d7e-412b-9ef9-a02f9141c6a7)","service":"cbc-sms","timestamp":"2026-08-21 16:30:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 16:30:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:35:00","totalConnections":1}
{"durationMs":3.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fe3003ca-ecc4-4405-9bc9-69447301f05c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:40:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fa6c5bcc-7b7c-47af-9fe4-9713e61f8628","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:45:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7b4c1575-be89-4d82-9b59-41216fba0c04","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:50:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ed581860-d653-4638-8fe8-d5b42d510798","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 16:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 16:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 16:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 16:55:00","totalConnections":1}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:55:01"}
{"durationMs":2.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8c864d5c-b1cd-4553-97ff-0a714b20f082","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 16:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 16:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 17:00:00"}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"65da9bf8-4656-424d-a05f-8b2effe69c9e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 17:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787320800311-KJOJW (20b98232-9261-4a75-9bdc-471dc0e98d12)","service":"cbc-sms","timestamp":"2026-08-21 17:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787320800294-1POCJ (b2bf9470-759f-48f2-9c45-a2e5e29f3d52)","service":"cbc-sms","timestamp":"2026-08-21 17:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787320800319-NCHL0 (58bc02db-2f85-4d89-904c-3d60eaa9902a)","service":"cbc-sms","timestamp":"2026-08-21 17:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 17:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:05:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"218240ca-c989-4138-ac5e-1d204c4a56dd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:10:00","totalConnections":1}
{"durationMs":2.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f2a71856-7992-4ab8-9793-1d7d0ce99dc8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:15:00","totalConnections":1}
{"durationMs":2.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b9105d0-21a0-4217-8b17-c325fa003c88","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:20:00","totalConnections":1}
{"durationMs":3.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dbd5775a-e429-4971-a261-3af6339f9c9c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:25:00","totalConnections":1}
{"durationMs":3.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"82b45fd2-69f8-4d12-9117-98f2c6932bbc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 17:30:00"}
{"durationMs":2.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a492e0d-4d8b-4f34-b9a1-572bd66ff9b3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 17:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787322600845-TIV7J (f6111329-549b-46e1-a181-3c54f95c4889)","service":"cbc-sms","timestamp":"2026-08-21 17:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787322600819-VWUFA (d78bff2b-6223-4e26-8166-f0b288c9dda5)","service":"cbc-sms","timestamp":"2026-08-21 17:30:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787322600837-OBHKL (c5ee634b-1b9a-4484-a47f-0940bf9238c7)","service":"cbc-sms","timestamp":"2026-08-21 17:30:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 17:30:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:35:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c014ee32-1db9-44b4-ba32-ea03f0682462","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:40:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96e4f5b8-19c7-4bc3-b9f7-bcff7087c89b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:45:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aae92ffa-07f7-44ae-9eab-85f5e1a712b3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:50:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3c588972-c3e7-4290-8405-4748696d240f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:54:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 17:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 17:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 17:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 17:55:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"77f425ba-de2f-4a39-aa08-0b27a84724f8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 17:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 17:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 18:00:00"}
{"durationMs":3.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5de939f8-d9a7-4903-b8b1-6e6739f13b65","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 18:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787324400375-A07H4 (cfde5444-83d0-411a-b780-3c85d2eba8f2)","service":"cbc-sms","timestamp":"2026-08-21 18:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787324400402-8292X (ef84ca73-47f4-4668-bb2e-eeb1485a43d2)","service":"cbc-sms","timestamp":"2026-08-21 18:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787324400393-89R0Q (b73cf3c1-b96c-4102-a710-8cf8d30f439f)","service":"cbc-sms","timestamp":"2026-08-21 18:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 18:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:05:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bcfc4c21-31be-44cc-a58b-27545af0c0ab","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:10:00","totalConnections":1}
{"durationMs":2.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"521c7702-e3f5-4b3f-aae1-5b8fe3985b8c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:15:00","totalConnections":1}
{"durationMs":2.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d1a423ad-c2fe-4ca1-8d3c-228d8af2f1c6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:20:00","totalConnections":1}
{"durationMs":2.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff6a4674-55fe-47e7-b442-5d5cf68ca9a5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:25:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d46bdde9-275e-48ba-aaaa-bc9a243768eb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 18:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 18:30:01"}
{"durationMs":2.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ffd84e2b-62fb-4290-9ac0-ed4bca3b81ca","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 18:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787326200980-WF3TF (d8395283-6892-43d3-bf1f-e6246d93b3ef)","service":"cbc-sms","timestamp":"2026-08-21 18:30:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787326200882-YGPRE (9349c0db-6b64-439c-afa7-847372f5b9f5)","service":"cbc-sms","timestamp":"2026-08-21 18:30:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787326200997-MZ1N1 (851d02a6-ebc1-411d-b3d3-ff172a9a116d)","service":"cbc-sms","timestamp":"2026-08-21 18:30:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 18:30:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:35:00","totalConnections":1}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3d9108c3-62ac-4cfc-b932-ddf92297f9d6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:40:00","totalConnections":1}
{"durationMs":1.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dd9b08c3-d367-48ca-bdab-df96f10aab53","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:45:00","totalConnections":1}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c4b52b88-4437-4566-922e-0bee15063b78","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:50:00","totalConnections":1}
{"durationMs":2.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b48442f4-b70b-499c-959f-c786ac196411","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:53:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 18:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 18:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 18:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 18:55:00","totalConnections":1}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c0b61fcf-32d0-437c-85b7-3e80651149a3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 18:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 18:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 19:00:00"}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f7878a1-b187-42e7-ad2f-7f2404401cbc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 19:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787328000428-WXKM4 (fb0d18b4-2e2f-417e-8e9c-5f1b99d1fce3)","service":"cbc-sms","timestamp":"2026-08-21 19:00:11"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787328000449-RFJDM (72732da2-2509-4f17-a6b3-992f08023068)","service":"cbc-sms","timestamp":"2026-08-21 19:00:13"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787328000458-K7WRQ (db6b82a2-7637-4b8a-bef6-491babb181c3)","service":"cbc-sms","timestamp":"2026-08-21 19:00:15"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 19:00:17"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:05:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"510ff530-83fa-4ecc-8fea-02e95f728f57","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:10:00","totalConnections":1}
{"durationMs":4.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bbdbf0de-e45b-4f12-a323-09970a7d1545","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:15:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"315a86e8-afc5-42a0-9b99-359826866717","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:15:01","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":41,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:15:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eb0fff29-d41e-4190-af60-cec1e0eefeb1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:15:37","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:15:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"101ee78c-ec34-4fe9-b2bc-4d641f9d0b1a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:15:47","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:16:00"}
{"durationMs":646.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"ff0f2185-6f96-4dfe-9daa-eb87734c8983","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:09","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":36,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:16:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fdcd5b16-fe46-4376-a2c7-faf9c69eb95d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:10","userId":null}
{"durationMs":55.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"377bfed8-d95d-42f1-890c-a97929b9d96d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":64.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"61ab731c-a896-4eb2-9f28-32c2f5d848e3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":106.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"8df529b0-2fb5-4623-98ab-0a41710ce521","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":151.08,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"4dce96af-58b3-4187-9c93-c9eb039479f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":93.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"2e8dd7ec-ea41-48ba-9c38-98b93880a3cc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":109.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"ff2c46ab-181e-4a53-8ea6-fda6c816d500","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":98.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"5e0d2783-09d4-455b-8a51-143180ce894a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":107.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1405d474-5472-4343-9e39-ada45409e7aa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":89.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"899fdd22-3024-4b22-a9a2-c517281b5eb0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1005.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":506.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:11","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"53f42614-84ba-4762-ab4f-30c44f01a045","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":57.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1081fd54-3fac-44d5-b945-5f4bb56eeb63","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":75.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"bff9d8bf-4c0d-4516-bcad-6684840dece0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":74.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"8e3bdec3-beba-4ac3-b4ad-a7f70c136d7b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":420.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":450.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":838.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":840.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1040,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":829.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":842.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":844.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":830.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"48039cfc-2fc9-4ba8-9583-5b7aeb428b8a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":105.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"8d190ef0-817e-49ab-b0d9-2b4fe55276e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":184.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"684e56cd-3758-4c39-8e91-1052d337a363","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":188.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"27f9b456-11dd-4305-8454-d498656d20e5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":189.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"35bf9fa1-cdaf-4262-9327-f93d2f5cab53","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":203.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"eaa924a4-aef7-41b7-9558-e1e329c58afe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":209.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"cee7fa45-de20-424b-b087-266f6c068daa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":413,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":440,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1034.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1147.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1172.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1176.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1178.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1179.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7525564d-9a06-4609-b9ff-22ce1b2e2e75","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":18,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:16:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"474bc0b2-404b-4f62-9c41-cfb9fabb2d12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:16:18","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:20:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1205d280-b859-4d6b-bdda-846109683c06","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:25:00","totalConnections":1}
{"durationMs":2.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"edbe5f52-053b-4c8a-81ce-01a21ac981cc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:27:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:27:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:27:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"95d4280a-fcfb-4e88-b9b1-c5729fb6be68","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:27:43","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:28:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"66fdcdc7-0020-4a89-8cf5-c0f0c16ef114","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:28:00","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:28:00"}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":78,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:28:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c80909b-1e9a-40bc-93d5-7cc528900b88","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:28:04","userId":null}
{"level":"error","message":"Error: Invalid username or password\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:426:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-21 19:28:05"}
{"durationMs":1286.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"0ac90b23-1c7c-445d-b99c-4e3125c8be31","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 19:28:05","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":3533.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:28:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e52ca07d-5ada-42e5-a06b-94d14324a0ac","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:28:07","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:29:00"}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:29:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3aff7f45-987d-4634-bbe7-a2a5027b1252","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:01","userId":null}
{"level":"error","message":"Error: Invalid username or password\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:426:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","service":"cbc-sms","timestamp":"2026-08-21 19:29:01"}
{"durationMs":1080.49,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"797dc7b9-aced-408e-bfed-0e352e43353f","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-21 19:29:01","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":2116.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:29:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fe1ee864-d7fa-483d-a597-8f3dbc1c1b69","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:02","userId":null}
{"durationMs":613.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"15058f6a-033f-4ec8-b08f-acb03d5ca7dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:16","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-21 19:29:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e6a5e59c-2320-47c6-8dbd-ba75d133af65","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:16","userId":null}
{"durationMs":27.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"3907a39b-e8e4-4a9c-bb1d-5fda004a5b08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"145a3517-8332-4816-a3d7-24ff7ca30f4a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"784d52e7-a809-489f-91f8-98c4a555e6dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":228.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"580f8c3c-7150-4743-9c08-1d60260f9160","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":220.35,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"96fb60f5-1e41-4653-8f7d-0f6deed4d5dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":101.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"3e4d19d5-8e14-44dd-bdfc-5dac0c9ae519","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":74.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"9418444c-b0ff-4155-bb72-a7422df357b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":89.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"454232f5-3100-46a3-896a-bad36b09b69c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":962.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":368.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":416,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":553.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":17.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3c9aad82-8fb7-444b-a917-05eb0dfea16b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"f35b213d-1d37-4912-bea9-4c32672883db","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.08,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"9da52807-29f9-4103-91f3-3916612d3296","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":59.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"b8c15d60-8051-4c65-9253-c9193a82c4c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":91.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"578983c3-b478-4591-aad4-153d88ac5cfc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":94.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"20e251d9-d415-4b09-9232-a12b3c007a40","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":697.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":703,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":604.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":607.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":624.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1024.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":703.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":953.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":991.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":755.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ce871f61-abcb-41aa-844c-8947c37c4860","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":34,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:36","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c4909ca3-84f2-4855-8eac-ec2cede67688","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":136.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"64569554-564a-413c-91ab-3a965e48b929","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787329772514-55559","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787329772514-55559","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":139,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787329772514-55559","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":183,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":543.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a1445e1b-31a1-460f-aa7a-40822ab7df7b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":66.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"dda2b668-5797-4219-91e2-ea50a7b8cf6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-21 19:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":428.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-21 19:29:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4769a17a-8b8b-4bdc-9bb4-8f1951299903","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-21 19:29:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 19:30:00"}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5516e80-afac-4354-980e-4a47586af90e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 19:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787329800170-O4RTA (308c90b9-e464-4ed2-ba1f-b1608b512b90)","service":"cbc-sms","timestamp":"2026-08-21 19:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787329800158-FJY39 (4c8fb7c5-7585-4dc3-9d3f-b83272fba01e)","service":"cbc-sms","timestamp":"2026-08-21 19:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787329800177-GQZ5B (59e1008d-fb6e-49d1-a574-7600c369fa64)","service":"cbc-sms","timestamp":"2026-08-21 19:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 19:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:35:00","totalConnections":1}
{"durationMs":2.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"90c2dc6f-c214-4d0c-97ad-ef79200930a3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:40:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0193c921-be8f-4359-8aa3-9f8cbab5c461","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:45:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f90affc7-c6f9-415c-8bd9-9909fe52914b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:46:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:50:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"56c1b5c2-7f9e-4507-8b41-73e4c992500d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 19:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 19:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 19:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 19:55:00","totalConnections":1}
{"durationMs":1.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cc73995f-7037-49b0-912b-df52449be546","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 19:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 19:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 20:00:00"}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"735187f2-f595-48b7-b440-913ac84ef875","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 20:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787331600837-QDYB1 (9c84bb73-2f7b-41ab-9034-26514d54f126)","service":"cbc-sms","timestamp":"2026-08-21 20:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787331600863-ATDI2 (23a1fc82-c502-49d6-9ced-ac3beeec1b53)","service":"cbc-sms","timestamp":"2026-08-21 20:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787331600876-5MHNY (6bd1c4f7-7d2a-484b-8e5d-2e24f1bef75e)","service":"cbc-sms","timestamp":"2026-08-21 20:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 20:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:05:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57f92661-fbd0-4593-8f54-26f9dfa74ee5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:10:00","totalConnections":1}
{"durationMs":2.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"67b29f88-17a8-49f8-99e1-830b9bfb5b18","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:15:00","totalConnections":1}
{"durationMs":2.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d6abcce1-d3ee-4ad4-be97-3c4a532fc508","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:20:00","totalConnections":1}
{"durationMs":2.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2859e4e3-7121-4a0a-88fc-d1915e3ec53c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:25:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3d2a4868-a586-43ab-b49b-99946b6c4513","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 20:30:00"}
{"durationMs":2.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"88b50bf3-c4e6-491b-81d9-e579424254af","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 20:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787333400311-6EJP5 (8e6465dc-dfd2-496b-bc41-57c1ab7b20a1)","service":"cbc-sms","timestamp":"2026-08-21 20:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787333400295-HIII1 (7da0959f-6284-4ad0-865a-0e2b9c681715)","service":"cbc-sms","timestamp":"2026-08-21 20:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787333400318-YHFUZ (665f8d4b-f526-474d-abe2-9213cc47dfaf)","service":"cbc-sms","timestamp":"2026-08-21 20:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 20:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:35:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c32a0a3f-2ec3-4351-9e59-742538ba82bd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:40:00","totalConnections":1}
{"durationMs":4.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3476fec-1ac2-4390-bd8e-c8c6733d7596","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:45:00","totalConnections":1}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eea8f5bb-c8b2-4083-a7ff-a11f7958e1dd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:50:00","totalConnections":1}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24060e47-8676-4d2c-9808-c8d98d07ccdc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 20:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 20:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 20:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 20:55:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"82795139-83d1-4dcf-b0b4-391fe92f1106","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 20:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 20:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 21:00:00"}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"847c0f0f-64a2-4f0e-82f9-92c3acdc719e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 21:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787335200925-IJS13 (fb6a820f-bb4c-4967-84f4-148787837d76)","service":"cbc-sms","timestamp":"2026-08-21 21:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787335200948-PK5X1 (1ffef5da-4712-4093-b8c7-6b9c622ddb09)","service":"cbc-sms","timestamp":"2026-08-21 21:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787335200941-6TZN0 (c5067d58-eb58-4d0e-8b1f-28ce40e231f5)","service":"cbc-sms","timestamp":"2026-08-21 21:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 21:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:05:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"611fedb9-563c-4ee1-aa36-ea5bc0cd3e6b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:10:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f9451c6-18ad-4e99-bd83-63d71c592d5c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:15:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4a223c14-a5df-4bcf-ad54-bc56e872956f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:20:00","totalConnections":1}
{"durationMs":2.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1556d799-2b70-454d-9488-0f2be6ab8e6b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:25:00","totalConnections":1}
{"durationMs":2.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2e6c59a0-dd1f-45df-813f-f55049f37c10","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 21:30:00"}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"54f06c52-3ce6-4a3e-9228-e40b8d5476e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 21:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787337000464-773FA (75c43008-94ea-46b4-8976-afb818391086)","service":"cbc-sms","timestamp":"2026-08-21 21:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787337000481-LRRJZ (090bd871-ca3c-445c-b907-568070038497)","service":"cbc-sms","timestamp":"2026-08-21 21:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787337000490-625OL (46b2beb7-b699-43be-8916-c00d53f6d7be)","service":"cbc-sms","timestamp":"2026-08-21 21:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 21:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:35:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"59c5b040-8684-453b-bc79-f4b4cd6d1321","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:40:00","totalConnections":1}
{"durationMs":4.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c76c663a-791e-45d6-a664-a0537ac6feb0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:45:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b79527fc-275b-4d18-b5e0-092e1716fec6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:50:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7bdfaa7e-7539-4c2d-93e9-9d4e0073c4b6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 21:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 21:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 21:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 21:55:00","totalConnections":1}
{"durationMs":1.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19b04d2e-cdf8-437c-9cc8-d79d8615712f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 21:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 21:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 22:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 22:00:01"}
{"durationMs":2.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"536c8a3d-1ec6-4a13-ae69-1be68e714bb1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 22:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787338801015-ES1JR (7ff9a9ac-7415-43bf-a419-6f91803a2dc5)","service":"cbc-sms","timestamp":"2026-08-21 22:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787338801030-XTLRK (dd7f22ca-e456-4154-87fd-09e72f8efdec)","service":"cbc-sms","timestamp":"2026-08-21 22:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787338800991-9A7CK (d342f621-b067-4f28-bc82-aa7518d0ef2d)","service":"cbc-sms","timestamp":"2026-08-21 22:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 22:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:05:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4dcf5001-cfb2-4ac8-ba7e-a884b59e3e6e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:10:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"14040fa9-dfaa-48fe-944b-7607fc8c36dd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:15:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ddae3873-bb55-4353-a8d7-88c999af055b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:20:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"126f5dcf-491d-413c-9282-7a7f85259fa9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:25:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7037f4ad-ad81-43a9-bcf9-b90a3c9c527b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 22:30:00"}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f7b03d9-e7a4-4803-b88d-1abc9125d6e5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 22:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787340600588-6NQFZ (0152d425-9e6c-4f3a-85bd-fc319aacde6f)","service":"cbc-sms","timestamp":"2026-08-21 22:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787340600674-3Y1M7 (f320e692-fb8a-4ef6-8ba7-c01e36322c69)","service":"cbc-sms","timestamp":"2026-08-21 22:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787340600492-UBP56 (d1cd3b01-62ac-440a-b0de-7b8811b0954c)","service":"cbc-sms","timestamp":"2026-08-21 22:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 22:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:35:00","totalConnections":1}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dee5ebdc-d627-4880-9f8d-098d02e83bfe","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:40:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2db03b48-1c70-4fb9-8228-4621a8bd1512","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:41:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:45:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"36bc1b09-ce3f-4de4-9fee-edbf4dd1e601","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:50:00","totalConnections":1}
{"durationMs":2.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"15361ce8-e148-41fa-8f5f-5dc1b8dca542","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 22:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 22:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 22:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 22:55:00","totalConnections":1}
{"durationMs":3.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"83c143bc-ce04-4c18-afb9-137040cb944e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 22:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 22:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 23:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 23:00:01"}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc570557-478f-4109-afe3-2ae40bc9933d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 23:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787342401031-5F2C1 (c1854be8-bf06-4079-a65f-d4297e87db08)","service":"cbc-sms","timestamp":"2026-08-21 23:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787342401016-2JAZ8 (9323b9eb-0b1b-42b6-8102-ec87be1dfbda)","service":"cbc-sms","timestamp":"2026-08-21 23:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787342401039-3J7BY (5dbee4f1-7848-4029-998a-5153678d9f05)","service":"cbc-sms","timestamp":"2026-08-21 23:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 23:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:05:00","totalConnections":1}
{"durationMs":2.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"25e26ef9-ee51-44b5-ac51-22b4d98a9a43","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:10:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"80356c74-a0d2-431d-9f39-50fc49b5c7b7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:15:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3b128762-d452-45e7-b21b-c4ba738b7be2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:20:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"44b43e5f-2824-4d59-935c-55a672c3642c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:25:00","totalConnections":1}
{"durationMs":2.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f64196fe-ba7a-4b7b-8b71-568f9c166ed4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-21 23:30:00"}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c0869cec-8579-4dfe-8b8e-f46890367043","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-21 23:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787344200568-4LX90 (f898bb34-7108-4e47-b55d-1ab50d219965)","service":"cbc-sms","timestamp":"2026-08-21 23:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787344200578-H3JEU (381ac504-ef0a-4463-b6e2-78413fb76706)","service":"cbc-sms","timestamp":"2026-08-21 23:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787344200544-WE6UD (d9259279-4763-4c35-89d0-f2d35ae5cedd)","service":"cbc-sms","timestamp":"2026-08-21 23:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-21 23:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:35:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5c1d5e62-9b3c-4884-950c-ea8949efd433","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:40:00","totalConnections":1}
{"durationMs":2.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7e13c781-8948-43f4-9dcb-9e43d7720818","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:45:00","totalConnections":1}
{"durationMs":1.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2b409e5b-5898-437e-ac8e-7c66ffc969f1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:50:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f8e4162a-01bb-4984-80fd-b4ba7875a89c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-21 23:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-21 23:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-21 23:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-21 23:55:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aac95f4f-0028-48f7-bfc6-3ab200be7670","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-21 23:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-21 23:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 00:00:00"}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ef3c6907-1c1d-4cc1-9867-8e35432a66ea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 00:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787346000159-4PNZ4 (10e4ebcc-cfbc-437d-bef8-af5e8355e171)","service":"cbc-sms","timestamp":"2026-08-22 00:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787346000137-2O8ZZ (3556ee8d-56c3-47c0-b439-2c3ab1bfe533)","service":"cbc-sms","timestamp":"2026-08-22 00:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787346000152-L5LXQ (350935d6-b2e0-4c59-b778-9a2e96a665df)","service":"cbc-sms","timestamp":"2026-08-22 00:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 00:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:05:00","totalConnections":1}
{"durationMs":2.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac931aca-7db7-46bb-98ee-1af03d51bb87","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:10:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"df1c2d6b-f7a8-4238-bcc6-0faeb697f47c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:15:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"049664db-4571-494c-8b2d-a17d11e1e473","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:20:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7bd0b52e-c32b-42b4-ba3e-12a3a1e5b208","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:25:00","totalConnections":1}
{"durationMs":2.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c2356c4e-fd43-4dda-8dd6-8ef4d26a373e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 00:30:00"}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"caf4701c-1e79-4d5b-a2f1-529ea3b2d318","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 00:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787347800739-Z5UO0 (b0870a24-6fca-4012-b9ac-06a1c6f9d003)","service":"cbc-sms","timestamp":"2026-08-22 00:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787347800746-LW4BG (c3eb86d7-0fbf-4062-a6d6-ded3f7409853)","service":"cbc-sms","timestamp":"2026-08-22 00:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787347800720-BRICK (e2af1456-2df2-4bf7-905d-b163a2d417bc)","service":"cbc-sms","timestamp":"2026-08-22 00:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 00:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:35:00","totalConnections":1}
{"durationMs":2.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3164908-1221-4dd2-82d2-fc9b7f036bcb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:40:00","totalConnections":1}
{"durationMs":2.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4bca3e6a-fda4-4e34-8eb5-cf96f9c5775d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:45:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"98a517ae-2633-4866-82e8-25719475abe7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:50:00","totalConnections":1}
{"durationMs":2.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c171cd96-d788-4b5c-b8a2-aea222c079d7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 00:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 00:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 00:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 00:55:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fcb89b07-c4c4-4352-8606-0a353f2c9e9b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 00:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 00:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 01:00:00"}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"083cfaba-96b0-4f6a-b45a-3274224d971f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 01:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787349600279-WQ3M6 (031b4c75-412a-4d9a-af4e-aec78fbab310)","service":"cbc-sms","timestamp":"2026-08-22 01:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787349600289-K5SS8 (5a04087c-2a51-4b38-b589-712784f50bb9)","service":"cbc-sms","timestamp":"2026-08-22 01:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787349600257-XPW6G (f1b91a9e-6e44-4687-88ee-4dc4931c341f)","service":"cbc-sms","timestamp":"2026-08-22 01:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 01:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:05:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ec18a649-ddc6-400d-a26d-c6a8f3daa0fa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:10:00","totalConnections":1}
{"durationMs":2.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"87b78b1a-e921-422c-8ce4-d60f8b5753d5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:15:01"}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3102c44a-ed30-4676-b63a-ebd6dbc1d5c6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:20:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d6927ad1-eb0e-4ff2-8f2b-95977583486e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:25:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"720ba748-06f0-4bcd-b56c-15edb726b8b4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 01:30:00"}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6502f319-1f00-4afa-ac8b-e2f32d0b2da0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 01:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787351400877-OZI9F (782059bc-2b8a-4aec-b6c2-2daa6e679305)","service":"cbc-sms","timestamp":"2026-08-22 01:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787351400887-634C6 (cb82b2c2-44da-4652-b23c-892ee89c8fcd)","service":"cbc-sms","timestamp":"2026-08-22 01:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787351400838-RN13Z (39dcb2c3-ed71-4f8c-acaa-6f6fb0e51113)","service":"cbc-sms","timestamp":"2026-08-22 01:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 01:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:34:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:35:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fe0c517-1682-4395-8a4b-22305e9648f6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:40:00","totalConnections":1}
{"durationMs":2.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0656f0a8-f5c0-4308-bbd3-b754ee82861e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:45:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96c6f99b-7f29-464b-bf20-a4440d569aee","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:50:00","totalConnections":1}
{"durationMs":3.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f8902cd-8997-4606-8d35-cbd673870b88","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 01:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 01:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 01:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 01:55:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b0e26ce-f50a-44cb-a470-a071a2709020","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 01:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 01:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 02:00:00"}
{"durationMs":2.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3cccc8d0-904f-4679-b2fd-eefe74afb9b5","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 02:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787353200679-NKPJM (95b835f4-e4eb-47ef-9e64-53a07f1e8589)","service":"cbc-sms","timestamp":"2026-08-22 02:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787353200598-Z1JCG (37a8a358-0fc9-4930-a2eb-5315656d0251)","service":"cbc-sms","timestamp":"2026-08-22 02:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787353200510-EM41D (32dc4ce1-a671-4c66-8ec6-ee2ce59a5a10)","service":"cbc-sms","timestamp":"2026-08-22 02:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 02:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:05:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"35b4c4ac-bca2-490a-b48a-75acfea7fb8e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:10:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ded64240-918d-4d0d-90fa-9283840e290b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:15:00","totalConnections":1}
{"durationMs":2.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"daa6d65f-74eb-439b-b8dd-a62075fde9a3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:20:00","totalConnections":1}
{"durationMs":2.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9cbe1629-1a54-4104-bad0-f2dd79ac5562","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:25:00","totalConnections":1}
{"durationMs":3.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"258ec624-6535-43f6-b594-8350a942b9c2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 02:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 02:30:01"}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d0bbdea0-af17-4770-b38b-43189f1e636d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 02:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787355001030-F75BD (7ba612b5-42dc-4ede-be9c-11adb0bfc7b0)","service":"cbc-sms","timestamp":"2026-08-22 02:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787355001049-6ZAWG (f4c0ce44-61b8-48bc-b0db-26657c95e6cb)","service":"cbc-sms","timestamp":"2026-08-22 02:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787355001057-HHKHA (7e0e2aa8-1bec-47d8-ba4e-3b343e6fddfc)","service":"cbc-sms","timestamp":"2026-08-22 02:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 02:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:35:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d9859edd-8eee-414e-9211-2de817f59fce","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:40:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c98b33bd-a619-4626-a6ed-fe9d9426fcea","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:45:00","totalConnections":1}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3d724dd8-64de-402e-82be-4fba7b63ce44","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:50:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"76a67974-3844-4e19-887e-77cccc468d1b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 02:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 02:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 02:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 02:55:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6023931e-0860-4fad-94b4-4431d3924f07","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 02:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 02:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 03:00:00"}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8de5102f-1c71-44ad-92c6-eb476dae61a7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 03:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787356800634-H2RL6 (727b548a-92f0-4f68-a8f0-6d6fb2731567)","service":"cbc-sms","timestamp":"2026-08-22 03:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787356800609-973VE (9646aea0-5fe9-414c-9648-0230a4aab6ab)","service":"cbc-sms","timestamp":"2026-08-22 03:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787356800626-ZHW4D (40093e5d-9deb-4505-a3a2-d7850efecd93)","service":"cbc-sms","timestamp":"2026-08-22 03:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 03:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:05:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0c53c4ba-d57b-4fc0-b49f-699db6b50a5a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:10:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d1c9fffb-54c0-4a5e-bcee-71936847b182","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:15:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3eba4ed0-1dcb-4ad4-990a-5642cae8b0a4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:20:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0b2469eb-3eb5-4fa9-9d94-b4b08b863d16","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:25:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60b1a045-323e-471c-8fa9-141bb0863443","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 03:30:00"}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9fa49412-0a61-49e0-814d-88346d9b9b71","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 03:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787358600219-7NUEF (53b31fac-d093-4399-9fcd-113c14345337)","service":"cbc-sms","timestamp":"2026-08-22 03:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787358600243-SLPUN (e6d75915-34e6-4b1d-9427-cf0eaf143560)","service":"cbc-sms","timestamp":"2026-08-22 03:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787358600234-MKYGY (5b090980-0e88-49bc-a0ea-52110e659990)","service":"cbc-sms","timestamp":"2026-08-22 03:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 03:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:35:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4d8a84fa-83d3-4c9f-94a3-4caf9db0c9a0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:40:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7fc9a41e-66cc-48c9-b07c-3aa8c1c1fb9f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:45:00","totalConnections":1}
{"durationMs":1.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ee998bfb-a1c0-43c4-bd06-76268919ce67","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:50:00","totalConnections":1}
{"durationMs":2.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e660ad15-de23-4e3d-af6c-0932883f7f05","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 03:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 03:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 03:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 03:55:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"67c3d843-220b-4d90-9c47-3f018b2bc401","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 03:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 03:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 04:00:00"}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9d27302f-010c-44f2-af32-8774d78078ed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 04:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787360400850-QR1UI (01f45906-ec73-466f-bae6-40ebf0222c13)","service":"cbc-sms","timestamp":"2026-08-22 04:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787360400842-JVKV7 (abc61f0d-3354-4113-a459-6c55495e4080)","service":"cbc-sms","timestamp":"2026-08-22 04:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787360400826-SQYS7 (bc094767-d3a1-41c2-ac37-72eb48cf9460)","service":"cbc-sms","timestamp":"2026-08-22 04:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 04:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:05:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79f0855c-a599-4c1b-a7fc-5c9b8e8c9fbb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:10:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a173046f-bc2d-405c-8516-8b68aaba54a4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:15:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d2b51ba9-2880-4f12-a4a5-02e15bee1ac9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:20:00","totalConnections":1}
{"durationMs":2.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c8638724-6ce8-47d9-b2df-f83fb34b49e0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:25:00","totalConnections":1}
{"durationMs":3.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b09496a2-36aa-4ffe-9c4e-92387ce28e3d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 04:30:00"}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"119f00e9-9366-40b6-ad11-6f92eebaed9a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 04:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787362200390-6M80Z (6e4c2758-8f82-406c-aa5f-1884924162a0)","service":"cbc-sms","timestamp":"2026-08-22 04:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787362200366-I19GB (b1d6c003-d553-4e00-a977-98826fc1d907)","service":"cbc-sms","timestamp":"2026-08-22 04:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787362200382-GSWQP (e182613e-e17e-4a5a-a7ba-cdf5bbdd196b)","service":"cbc-sms","timestamp":"2026-08-22 04:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 04:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:35:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"21d66693-939a-4262-8143-f1b2e42ef49a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:40:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e2126b3-f1c3-4ef0-aefd-a235f26511cd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:45:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"74636a75-56c9-4439-9849-719244f6fea8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:50:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7287a8e3-a16e-48b8-b0db-e0276fb18863","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 04:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 04:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 04:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 04:55:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"14343360-f411-43dd-8c11-3d9aeacbf374","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 04:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 04:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 05:00:00"}
{"durationMs":2.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2b7bde70-de42-4d81-8ffe-a3d8b83d86e6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 05:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787364000081-3L016 (0309dc19-4a06-4af2-a995-f97bd0ec9b99)","service":"cbc-sms","timestamp":"2026-08-22 05:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787364000063-O5OY6 (820a46a7-48c3-4c8d-a6eb-1ab80089432d)","service":"cbc-sms","timestamp":"2026-08-22 05:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787364000093-GM82S (a9389f54-7707-4a00-953a-4f6bbf628da7)","service":"cbc-sms","timestamp":"2026-08-22 05:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 05:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:05:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3d8b12b8-282c-4383-abcb-978ec394a3c0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:10:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bcd9662c-29c6-472a-a5a5-ccbc1ca83944","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:15:00","totalConnections":1}
{"durationMs":3.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5297816e-6420-4936-8544-3f8fe1d38240","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:20:00","totalConnections":1}
{"durationMs":2.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"992b8c56-87f3-477f-84e5-c24c9e54d9af","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:25:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0274d7cc-8747-4585-8dbb-eed34e12810f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 05:30:00"}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e4be3358-20cc-4acf-91d9-5887c07871e8","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 05:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787365800761-15S0I (faf2841a-aff7-4276-a6b8-726e264fbb43)","service":"cbc-sms","timestamp":"2026-08-22 05:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787365800770-ZY96L (8ef5d98d-d83b-48e1-ac73-24079e8dfdfd)","service":"cbc-sms","timestamp":"2026-08-22 05:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787365800744-8DFVQ (8356fee3-868e-4558-b29b-044fd9c2b21a)","service":"cbc-sms","timestamp":"2026-08-22 05:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 05:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:35:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cdd1e2f2-e629-4944-ac90-c0f446310e2f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:40:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02297fb4-6344-46db-9961-dfd0a5242649","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:45:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96a6c4cd-5395-49b7-a100-16d9e95d700b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:50:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7d0bb75a-9d35-4ce6-97b8-44fb7a991b09","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 05:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 05:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 05:55:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 05:55:01","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"839c7b1c-f073-44e2-926f-7e2fa42a2c90","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 05:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 05:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 06:00:00"}
{"durationMs":4.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a6dca7c3-0590-4468-a014-2b82e3f1b102","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 06:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787367600279-9BLDM (8083069f-2d41-4d6d-bb98-52851f5ee888)","service":"cbc-sms","timestamp":"2026-08-22 06:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787367600308-U5UD1 (a6b6c944-4d11-44b8-88c3-5a688a4a557b)","service":"cbc-sms","timestamp":"2026-08-22 06:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787367600299-QT53Y (c29cef83-667c-46ea-aab5-f0a8a5eab9fa)","service":"cbc-sms","timestamp":"2026-08-22 06:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 06:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:05:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9d0ec67a-7f1a-4c2c-a195-687f4702ce7e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:10:00","totalConnections":1}
{"durationMs":2.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9b872c7c-b1f1-4780-8939-26c172e65a04","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:15:00","totalConnections":1}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5928758-4e1e-4b61-b70c-38f7a54b28bc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:20:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5eb28db-3ff3-490d-8075-dddedd1997df","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:25:00","totalConnections":1}
{"durationMs":3.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"865d1648-22c8-4d24-b06f-0e5cde48f693","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 06:30:00"}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fed6d86e-96ef-41c1-bee6-76e3ddd14e42","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 06:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787369400887-E7EOK (63e2101e-23ac-4777-81b7-4662d3221d68)","service":"cbc-sms","timestamp":"2026-08-22 06:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787369400871-J460E (92ed3db9-c212-40b9-9250-d58106711ccf)","service":"cbc-sms","timestamp":"2026-08-22 06:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787369400896-SDAIO (ba5c6b30-cf14-41b1-9b19-660b21e4bb00)","service":"cbc-sms","timestamp":"2026-08-22 06:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 06:30:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:35:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"54c5f2ec-6f27-4803-b6b4-c3ab63aeeeba","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:40:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d17aebe-d900-484c-ba23-1665d8539c7f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:45:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"41a46f81-0b03-479a-83b6-3893e161418e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:50:00","totalConnections":1}
{"durationMs":2.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bfd7bf02-4c1e-4c43-a8dc-dbd0bdd0fad4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 06:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 06:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 06:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 06:55:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b5635524-bdb7-4ce4-81a9-e07a2259eb1b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 06:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 06:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 3 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 07:00:00"}
{"durationMs":2.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6eace56f-3cc6-4182-ac9c-864c84f9b324","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 3 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 07:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787371200433-VUCAT (4be5c902-b24b-4d83-8440-25d69a3d4b64)","service":"cbc-sms","timestamp":"2026-08-22 07:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787371200400-B0L30 (b9fb25bb-3d2d-4b76-b952-b98f89001c86)","service":"cbc-sms","timestamp":"2026-08-22 07:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787371200425-AYH5X (ef68eec6-ac21-44d4-a091-32083ead52bc)","service":"cbc-sms","timestamp":"2026-08-22 07:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 3 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 07:00:18"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:05:00","totalConnections":1}
{"durationMs":2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f7dd19ea-e89a-4830-9fcd-7bbdac2b88f0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:10:00","totalConnections":1}
{"durationMs":2.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"874e8078-7a8c-4dc8-ade1-0939ff98f76e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:15:00","totalConnections":1}
{"durationMs":1.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a02cb1c5-6f5c-46a4-b7df-5f851ff67409","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:20:00","totalConnections":1}
{"durationMs":2.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ea55ca81-bd47-4bc7-bfb1-760fa48b61ed","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:23:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"04edb2c9-0d8c-46bf-a50a-5d1ccfda6859","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:23:35","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"68e0647c-8689-4c61-9cfd-ea76b16ef9d8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:23:48","userId":null}
{"durationMs":566.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"6673d546-f503-4820-a394-ecbeda88d539","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:23:49","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":38,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.61,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"622a274b-bb65-4e81-9b3f-454f12568b53","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:23:49","userId":null}
{"durationMs":45.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"278ee789-64fd-4dd5-bdbd-5b2c7772d384","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:23:51","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:23:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1d858142-19b9-47b7-ba8a-d58743d2fa4d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:23:51","userId":null}
{"data":{"from":"/platform/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:24:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:24:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.76,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e7b940e5-56a6-424e-8574-046bfa881196","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:00","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:24:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:24:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f2d6a30c-d213-48a3-9a87-a74be69d8150","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:12","userId":null}
{"durationMs":663.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"48af3253-9e9b-491e-a914-0594e2caea5a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:13","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":33,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:24:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1164a2b0-e6d3-4089-9b87-ec8263b85cc9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:13","userId":null}
{"durationMs":27.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"edb68ede-8352-4aea-ab88-4cb46ba7deca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"ecd3d732-6254-42f0-8bec-4c528ad30435","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1a60c427-f5da-499b-b365-e69a5c106eca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"004a4afe-91f5-46f5-8214-7b0f381f3ea7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"cb04d75e-d295-4ae5-9759-419596c259e8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":95.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"653ddc0d-47bb-4a78-9f87-7a7dba46e7f9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"eb0f65ee-3f36-42ea-8b03-5d6aba68fa2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"149cebae-ba0f-4197-bc37-d1cdb7136353","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.91,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"95eeb9a1-3dc4-4440-a61d-9fb6a6bc37b4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":22.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"5b49c5de-618e-4d7c-84dc-71aa3aeb7b63","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":22.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"5b61fa11-ec0a-4a99-b1d6-1bdab986a501","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"d88f6644-4e27-43c4-b974-10b8c686fd74","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1031.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":463.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"145d50cb-f8fb-4ae4-ac9d-264928f0dcae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1084.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1105.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1321.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1676.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1716.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":1986.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":2147.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":2466.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":2798.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":3034.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":3397.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9dd9cc4c-5aa3-4d77-bbe7-9d33c7ca1c54","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children","requestId":"41a6bdc4-895a-43f0-8c9b-1cda488bab07","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"View Details →","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":null,"navId":null,"text":null,"to":"/guardian/students"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":null,"to":"/guardian/students"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"95f3f866-2673-4982-b25e-ba7449f75ef1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children"},"durationMs":702.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6f1e0ee5-53d6-4b7b-bac8-bf8ba7ffb056","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":405.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"d8deae8d-79b3-44ec-8a16-e5efdee15702","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay Fees","name":null,"type":null},"durationMs":7,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/students","href":null,"navId":null,"text":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/students","navId":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"212ac668-e5b3-4e36-a234-82124fc0da69","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":69.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"7b487eeb-418c-439c-93f2-f9e90c538501","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:24:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":778.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.45,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7ab941cf-1fe7-4cab-9b2c-0c9466525d3e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":781.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"df6a5b9a-5c32-40cc-9c90-9d0723e00575","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,376.00","name":null,"type":null},"durationMs":87,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"676c54d4-d01b-4231-bfd7-5f45f2356a5f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["5a1409a6-e22c-47c8-9812-dff49d0307a1"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21376,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-22 07:24:54"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-22 07:24:54"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:24:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86fb7cf2-42b7-423d-9107-f34d6f6fd22c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:24:55","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:25:00","totalConnections":1}
{"durationMs":3.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"243f281f-c3b8-45d5-a77d-780d6a9ad7a7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:25:01","userId":null}
{"durationMs":53.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d3bbf108-2c71-4621-90b8-c6be6aab19b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:25:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0c330488-aed2-4e9e-a6c5-82ad916a9111","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:25:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1712.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1824.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d1caaa21-de3f-478d-9554-19ee168a07e7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:25:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":30022.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:25","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.11,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c43bc8aa-cb68-4eb5-9d70-ddee68b5810a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:25:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Try Again","name":null,"type":null},"durationMs":34,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5838b973-152b-4cea-9f8f-3f4199e7611b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:25:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["5a1409a6-e22c-47c8-9812-dff49d0307a1"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21376,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-22 07:25:29"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-22 07:25:29"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":24.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f11796e2-c52b-45f1-bf50-66a4da0f779a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:25:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":30003.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:25:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.93,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7623f009-3de9-4a03-863c-5b02c35a4620","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:25:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":16,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"99a55a0b-4d62-4831-b81a-5142ece33e3a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:26:00"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":318,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9d710850-3065-4698-b715-7d77b9d8f19a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":84.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children","requestId":"4b4f296c-8062-46ac-b298-2a1291e86a09","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d206946d-55e0-4262-b22e-7f928c059f46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/guardian/students"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/guardian/students"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children"},"durationMs":751.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:17","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":19.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a0a6fe0-a576-461f-a7fd-f34147839267","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":56.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"060f1c4e-2ee5-41e5-8d9c-626f68c46ec6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":591.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":773.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d3bd9a6a-84d0-484b-b64d-904b947f6ad2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/students","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/students","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"55b7ff54-834c-4fbe-8dfc-b7212710eca4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:19","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":40,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9bd624d9-1b2c-43cc-8f44-0f7bde944a2a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:28","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":32,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"611a6d87-4485-467c-88b5-a416e5936377","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:31","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"90988cbc-1cd5-4752-9e70-4ac1125644de","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:35","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:26:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cb8d3323-ea1f-4903-ae4e-288e11c3bf64","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:41","userId":null}
{"durationMs":599.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"42dff5b5-81a7-45b5-8335-f3ced14d1177","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:41","userId":null}
{"durationMs":64.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"ffc86902-809d-4d33-8f44-a86594847b52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":43.93,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"b22ccfeb-f086-43b5-80a4-300609b5c918","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":63.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3a68cfa6-8be4-446f-8b32-cbd0626a2be0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6041267a-805e-4d2c-8d4d-304a6fb833f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":52.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"69f980b5-a23e-4c81-b200-4e90f960cf79","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:26:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":87.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"de4de412-bbd4-4c92-8f44-23ceb377dc6f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":72.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"9d9d0013-265d-4c1b-b21b-e993253c9fea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"a0fa4778-600f-4e8b-96ac-754031bad297","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"06ecb183-2cce-48b0-a9ab-7d3237f2dd78","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":47.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"6c8bcd8e-31df-4b76-836a-39ca7fc2f694","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":39.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"14bcccc8-3cff-4aae-997e-9fc0145ee915","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"5dbccf01-3882-47aa-9766-533cf52bef5e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"07464d19-7425-4401-8025-0a143421acb4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":4148.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:26:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a65c5132-8fa3-488d-b8f5-c6214b77c06f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":57.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"0937fd9b-06f4-4cca-ba85-7e63d0907c4c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":52.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"fc434fb7-3ab4-4dc8-a6a4-3c1ccdf97b15","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"08fa37ff-0980-442a-8a32-7e74588b4df8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":37.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"61453430-2425-4242-808b-70a8c995e3a4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"9cfde4da-6122-4bf2-b468-b5ad8f9e7caf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:26:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":2992.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":4588.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":6289.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":67,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":7284.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":7608.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":8211.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":9005.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":10384.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":33,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":11406.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":12064.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":12431.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":13531.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":13917.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:00","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.58,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7269cb7f-e829-4f31-928e-70fdfce3af6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:27:00"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":13015.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":13042.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":13726.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":14361.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":14947.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:01","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1e159858-1911-46a7-bcee-0401950b24fc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":83,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ff2c48c9-a5fc-4b74-b8f4-77e5a92908f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/finance/fee-dashboard","navId":"1787372831736-588575","text":"Fee Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.53,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7cace73a-2c6d-4a66-a2be-fcc1f74b8877","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:18","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":107.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/dashboard","requestId":"04dbddf9-0d15-487e-b629-c776e4d125af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":37.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/years","requestId":"ffa27791-b1df-43f4-8ba2-330585c34373","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/analytics/debt-aging","requestId":"ed78bb49-0445-4806-ada3-a044e18ce999","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/analytics/collection-velocity","requestId":"65af3283-8950-411e-98cc-f819380ae4ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":79.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/analytics/payment-segments","requestId":"08758bf6-d992-4ba6-89c0-bc21dcda430c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"checkoutRequestId":"ws_CO_22082026072723433706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"e49e4e76-a89f-45df-af97-64c0804f5a1b","service":"cbc-sms","timestamp":"2026-08-22 07:27:26"}
{"durationMs":66.43,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/analytics/forecast","requestId":"fc3d1e0b-9c8f-4017-b314-dde968263426","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:27","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/finance/fee-dashboard","navId":"1787372831736-588575","text":"Fee Dashboard","to":"/dashboard/finance/fee-dashboard"},"durationMs":2126,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787372831736-588575","to":"/dashboard/finance/fee-dashboard"},"durationMs":2126,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787372831736-588575","to":"/dashboard/finance/fee-dashboard"},"durationMs":2174,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:27","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"33bea7ab-6144-469c-be97-148dcb047b97","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:27","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/dashboard"},"durationMs":1777,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/years"},"durationMs":2710.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/analytics/debt-aging"},"durationMs":5053.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/analytics/collection-velocity"},"durationMs":6367.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/analytics/payment-segments"},"durationMs":7069.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/analytics/forecast"},"durationMs":9826.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.43,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bfa75eeb-f98b-41c3-985c-2c2723b3766d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"checkoutRequestId":"ws_CO_22082026072727459706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"0bd1d625-70d6-4dfe-b766-97d73b5175b2","service":"cbc-sms","timestamp":"2026-08-22 07:27:30"}
{"durationMs":52.83,"ip":"196.201.214.200","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"37c03844-0aab-4612-8e5c-f02a538c936a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:42","userId":null}
{"data":{"id":null,"label":"Analytics","name":null,"type":null},"durationMs":55,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:44","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8f4a6f28-bd20-42fe-8ad5-31e50d25f550","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Insights","name":null,"type":null},"durationMs":29,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c1c4c077-4ca8-4a82-8bab-d0fda7dde98c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":50,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8fe1c554-def0-4f9d-bf31-a89581bf7e48","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":72.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"e849c7df-e357-4eea-a29a-91e0990a2ad8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:27:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"9055db25-1a3e-4f0b-84d7-912e0a5bc0b3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:27:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"HR","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":6145.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3cf0a8ed-9b25-422b-b167-29b094b6a2ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"HR","name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":6252.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:27:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f1fff6c2-0b7b-4e06-8b77-be78446569f6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:27:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:28:00"}
{"data":{"href":"/dashboard/finance/payments","navId":"1787372878437-205418","text":"Payments & Deposits"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/finance/fee-dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:04","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"695097f3-6707-47f6-80d7-1c2afdcee794","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"dfb8298f-0b50-4702-a422-b70d274b1343","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":457.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/invoices?studentId=","requestId":"709060a1-33ab-4af3-94e9-50a305d1d8a6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/banking/banks","requestId":"57de41dd-cea3-4976-9ddd-658593cda9ae","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:07","userId":null}
{"data":{"from":"/dashboard/finance/fee-dashboard","href":"/dashboard/finance/payments","navId":"1787372878437-205418","text":"Payments & Deposits","to":"/dashboard/finance/payments"},"durationMs":909,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/fee-dashboard","navId":"1787372878437-205418","to":"/dashboard/finance/payments"},"durationMs":909,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/fee-dashboard","navId":"1787372878437-205418","to":"/dashboard/finance/payments"},"durationMs":956,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f97565d4-8e84-4984-b182-ae04cb1f9658","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":69.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/finance/payments?bankVerificationStatus=PENDING_VERIFICATION,UNVERIFIED&limit=100&sortBy=createdAt&sortOrder=asc","requestId":"0b228ec1-ca4c-417c-8daa-3eb3daefe449","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":2820.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Unverified Deposits","name":null,"type":null},"durationMs":123,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/invoices"},"durationMs":4520.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/banking/banks"},"durationMs":4844.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Payment Settings","name":null,"type":null},"durationMs":34,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2a116fac-875d-4f85-9a01-c687e4aad00c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":49,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/finance/payments"},"durationMs":5271.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ceea0e2f-a0a8-4f8e-b2cb-74fb309582b4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"42d48c27-0f75-40bf-b803-078b84e97303","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"6fa1b2b0-71d5-403f-8e19-9dbee5f7b054","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":257.74,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/invoices?page=1&limit=20","requestId":"d2a41c74-f380-467b-a2bd-bc22fa34264f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":90.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/payments?page=1&limit=20","requestId":"a29a0e5b-f1d2-4251-b14c-67e4efa71e14","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":93.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/dashboard","requestId":"21b78025-554a-4ab8-9516-4ca5436a2e80","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:17","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/finance/invoices","navId":"1787372891723-527558","text":"Invoices & Reports"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/finance/payments","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/payments","href":"/dashboard/finance/invoices","navId":"1787372891723-527558","text":"Invoices & Reports","to":"/dashboard/finance/invoices"},"durationMs":769,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/payments","navId":"1787372891723-527558","to":"/dashboard/finance/invoices"},"durationMs":769,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3dc304d7-a905-49f8-8ea0-ab4f74169122","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:18","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/payments","navId":"1787372891723-527558","to":"/dashboard/finance/invoices"},"durationMs":855,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":404.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":765.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/invoices"},"durationMs":1334.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/payments"},"durationMs":1659.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/dashboard"},"durationMs":1981.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:28:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"426b00de-f40d-4ca8-9853-0fcb408a6f67","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard/finance/invoices","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"08033d09-48fb-424f-8bf1-bf4f247951aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2e5faaf9-41fe-4f38-87a4-0b02059a491f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:40","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:41","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8bd86664-f7f3-4b00-b9de-3087c015e3dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:41","userId":null}
{"durationMs":558.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"194b048f-e783-4686-aeec-443f48e249e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:41","userId":null}
{"durationMs":38.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"eb7c5951-ace2-4594-8d67-d8362514cda4","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:28:42","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.11,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d53d4550-7d53-41df-96f5-3f8891ec7e4c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:43","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":29,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":68,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fc29470e-c73d-4734-a75f-7b1b8f3f487b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:45","userId":null}
{"data":{"href":"/platform/payment-integration","navId":"1787372931055-318060","text":"Payment Integration"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:56","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e4653032-6d96-448b-9c29-7cd4ffa47582","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:56","userId":null}
{"level":"info","message":"[Payment Config] GET request received from user:","service":"cbc-sms","timestamp":"2026-08-22 07:28:56"}
{"durationMs":19.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config","requestId":"ef0049f7-0c10-4eb3-a42e-cfcdfd93d542","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:56","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/payment-integration","navId":"1787372931055-318060","text":"Payment Integration","to":"/platform/payment-integration"},"durationMs":847,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787372931055-318060","to":"/platform/payment-integration"},"durationMs":847,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787372931055-318060","to":"/platform/payment-integration"},"durationMs":868,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:28:58","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0a8d5486-beff-4ab9-855b-ccdd5d2df79b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:28:58","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:29:00"}
{"data":{"id":null,"label":"Sandbox Config","name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":"Production Config","name":null,"type":null},"durationMs":35,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:07","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"930902c8-cc7c-4b9d-bfe2-e3fbee5d7f16","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:07","userId":null}
{"durationMs":44.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants","requestId":"bde1689b-22d1-4d09-90c1-8aa5ce8582da","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:08","userId":null}
{"durationMs":10.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/banking/banks?isActive=true","requestId":"802c96dd-afdf-4a56-aae1-a99f11df6eb3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:08","userId":null}
{"level":"info","message":"[Payment Config] GET school-settlements request received from user:","service":"cbc-sms","timestamp":"2026-08-22 07:29:08"}
{"durationMs":12.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payment-config/school-settlements","requestId":"3ac9d87f-b648-42e3-9f16-3229d985137a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:08","userId":null}
{"data":{"id":null,"label":"School Settlements","name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/banking/banks"},"durationMs":672.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:09","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"15e23016-efa9-4257-9d2b-1bc3de1e76cf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:09","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/payment-integration","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d41ce715-3d95-43a5-8a10-15cf367871c1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:12","userId":null}
{"data":{"from":"/platform/payment-integration","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/platform/payment-integration","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1f75ec33-da08-42e4-8948-11d2a8a21a86","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:15","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bca62703-5765-4e2c-8503-7f71348e4648","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:30","userId":null}
{"durationMs":617.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"c4593f2c-ce3e-4a98-9883-75f18d2d1d93","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:32","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:29:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75505319-9ba5-4c4c-b4ee-36892a24940a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:32","userId":null}
{"durationMs":25.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"f05db955-48fc-40e8-b4ed-ceb0307792f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"4e338f6b-b92a-4ff8-970d-824fb96906e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"f2859605-a3a6-417b-82ce-665c93742f6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"5f58e764-8678-42d1-9056-f6872258ccf8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"ef799c0b-d9e7-4b69-b28b-12fe81ebab23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":107.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"a4f85283-bf4e-4264-b25b-8032dad41ce9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"b5da0fae-4c75-4ae1-b7b4-32e3637fe669","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"8dc36c8d-9215-4d25-b816-93096513cba2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"35db4c53-27be-4476-9c64-ccc615bbe17d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":21.61,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"28640730-f682-4cab-a78e-47464c92f66c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":24.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"d306ce66-d26d-4ec6-8b4e-dae5382afe2f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1004.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":499.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a7861a1b-423d-4d07-bc83-39fffbf4cff0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"b50823b5-4f90-470a-bbc1-b58cf464f31f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1237.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1254.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2111.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2438.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":2902.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":3149.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":3490.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":3440.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":3705.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":3983.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":4067.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b6ca0669-7f46-4185-ad11-cbeab48ffb6e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":50,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"931ab565-616a-4e56-8304-299e23897428","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":203.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"1a5081c7-7790-473f-be1e-80a096647fc6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":54.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"f0410b7c-d558-4be7-b962-cd2c0990c00b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:29:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787372980538-711456","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787372980538-711456","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":74,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787372980538-711456","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":98,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":555.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"81085ef4-b876-4c69-bb80-f233c63fa6bb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:45","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":403.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0fe8e052-5d87-4cbd-9f21-5a6ba2a1fb01","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:46","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":295,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:29:49","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"962eb0f4-4c86-4352-bc4a-3792c94a80e5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:29:49","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 07:30:00"}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a65c72e-670f-4106-963d-ad5e842ab131","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 07:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787373000237-H1SMF (3f86d8f2-2191-447a-a3fd-bc016ff89ea7)","service":"cbc-sms","timestamp":"2026-08-22 07:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787373000265-7GQF6 (528ea545-7896-4397-94ed-7f9c38fe4a9b)","service":"cbc-sms","timestamp":"2026-08-22 07:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787373000223-AA9ZX (eb83a673-3add-4dcc-8d12-0f132f072d6d)","service":"cbc-sms","timestamp":"2026-08-22 07:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787373000248-JZ5FY (fbcf1c2e-38ff-4f17-8b20-4d0cbc7c5d01)","service":"cbc-sms","timestamp":"2026-08-22 07:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 07:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:35:00","totalConnections":1}
{"durationMs":3.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"78f9d93f-0d29-44a2-ba87-2d52bdc3294d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:40:00","totalConnections":1}
{"durationMs":2.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b0f15e0a-9869-441e-975c-90b83a092024","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:45:00","totalConnections":1}
{"durationMs":3.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5c5a48db-b03b-431e-a029-eef2e776a70b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:50:00","totalConnections":1}
{"durationMs":3.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1db155bf-56fe-47e9-a425-8e8715328a39","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:50:02","userId":null}
{"durationMs":4.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"32700e0b-0a6b-4357-8853-fe67eb302bf1","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-22 07:50:19","userId":null}
{"durationMs":3.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"587a8a91-9abe-4364-9b9a-17f253486835","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-22 07:50:19","userId":null}
{"durationMs":29.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"252d640e-82a2-4b2d-92c7-ed15bce9118e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:19","userId":null}
{"data":{"method":"GET","status":401,"url":"/guardian/dashboard"},"durationMs":351.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:50:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"125c6a01-5e58-4f26-b119-e05022eedbf7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:22","userId":null}
{"durationMs":34.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"d0aea487-f34c-4374-830f-795d7ad41e30","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:22","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"172.253.234.212","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:50:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"172.253.234.212","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 07:50:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.11,"ip":"172.253.234.212","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"559c9bb6-8b29-47bd-b79c-ed8478d6577a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:22","userId":null}
{"durationMs":303.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"066522b7-c40a-46e1-9337-8c8304e4193f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:22","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"73af71ef-5000-41a0-806a-8d457fa9282e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":67.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"53493aee-9124-4deb-8527-90cc0caa7d90","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":81.58,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b5d50b6f-15e2-4e1c-943a-56ef9417034b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":81.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"a0e34973-292e-4f47-88de-bc6cb3f2cef7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/guardian/school-info"},"durationMs":1387.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":2426.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":75.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f38694c5-825c-4ca2-a64b-68594e0bc408","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications"},"durationMs":12057.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/guardian/school-info"},"durationMs":10039.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/inbox-count"},"durationMs":12070.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":12072.3,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/communication/notifications/unread-count"},"durationMs":12086.9,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":null,"url":"/school/enabled-modules"},"durationMs":12090.6,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":76.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"927c8967-e706-4535-87d3-4cc6c80d960f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":147.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results","requestId":"b87eff74-41b9-4f0d-9831-6eaf27c85651","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":148.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades","requestId":"c796c473-33de-4ea7-889b-9c309551014f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":611.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"67e4e5e2-6071-482c-b9fd-fc3339a04d64","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787374232989-474985","text":"Results"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian","navId":"1787374234066-162903","text":"Home"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian","navId":"1787374234758-930110","text":"Home"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian","navId":"1787374235315-888386","text":"Home"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":42,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787374238393-437837","text":"Fee Payments"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":9428.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":9721.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":9725.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787374241319-681322","text":"Results"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787374241319-681322","text":"Results","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":253,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787374241319-681322","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":283,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":10049.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":12.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"df8e0bff-2d83-44c7-af33-de22a61aea0c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":211.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"8100dc69-edb0-4bbf-8450-e65440692a79","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":42.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"befe2fb4-0eff-4e68-9e9b-138a94de164b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:50:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ef98c364-577c-4f56-a841-63c63e7f65fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:50:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/results"},"durationMs":479.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/cbc-grades"},"durationMs":484.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":10571.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:46","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.82,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"be636640-2582-4e06-851c-2805ad717344","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"52fc9968-c81f-490e-bc8c-758fac380335","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:50:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":196.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"d0ad7c5c-08c7-4267-bdf1-0a8bb492654d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 07:50:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787374243301-953761","text":"Results"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787374243759-573444","text":"Fees"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787374243759-573444","text":"Fees","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":82,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/results","navId":"1787374243759-573444","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":141,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:47","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e19bbb30-1c6b-4cfa-b6ef-6ceace0d4e7a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":422.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":559.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 07:50:48","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9e182d92-86b6-44bc-b30f-07f11671a90c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 07:50:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 07:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 07:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 07:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 07:55:00","totalConnections":1}
{"durationMs":2.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b1aa26ee-e0a0-4a6a-a6c8-951f25e11267","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 07:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 07:59:00"}
{"level":"info","message":"[CRON] Library overdue check started","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"error","message":"[CRON] Library overdue check failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/library-overdue.job.js:14:56)\n    at Task.execute (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 1 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 08:00:00"}
{"durationMs":2.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6547add0-094e-42e4-8008-ee755e5f5e5c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 08:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787374800691-6O3O5 (644e80ce-822c-4eb8-bdba-3262572ee7cb)","service":"cbc-sms","timestamp":"2026-08-22 08:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787374800684-58SBQ (6623a064-bea6-4b3f-a2f9-e0db344b68f4)","service":"cbc-sms","timestamp":"2026-08-22 08:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787374800657-5N2VX (88612452-4ddb-438e-9c61-b44fb99efd66)","service":"cbc-sms","timestamp":"2026-08-22 08:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787374800675-WML2C (fc2571a6-f7e2-441a-b69b-e92953c8bd19)","service":"cbc-sms","timestamp":"2026-08-22 08:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 08:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:05:00","totalConnections":1}
{"durationMs":3.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b627745f-f1ff-49a8-89ba-e803a82018cd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:10:00","totalConnections":1}
{"durationMs":2.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9407b1fb-4d19-4c58-ad43-26e3b0050b90","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:15:00","totalConnections":1}
{"durationMs":3.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e89d0540-3a69-4ea6-9ca6-f4d3b42cff0f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:20:00","totalConnections":1}
{"durationMs":1.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"851f6f83-2ebf-4e93-88a2-d269916ec958","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:25:00","totalConnections":1}
{"durationMs":2.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2e043f33-ad3f-4ccc-8b94-c00c8e3c5b32","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 08:30:00"}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fe9a5cf1-dea0-4336-82a6-05bf8050e757","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 08:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787376600146-8PCKF (103e8f8e-3100-4ee8-9460-60266e09ba33)","service":"cbc-sms","timestamp":"2026-08-22 08:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787376600130-MKA35 (3387d30f-43c1-4e5a-93a8-56c67310d8a5)","service":"cbc-sms","timestamp":"2026-08-22 08:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787376600111-DN5KA (775d8a11-c888-4f8c-8bc3-56b1277434e9)","service":"cbc-sms","timestamp":"2026-08-22 08:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787376600138-LTBXT (ca260296-30d3-44d6-8e70-75f8ed04f45b)","service":"cbc-sms","timestamp":"2026-08-22 08:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 08:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:35:00","totalConnections":1}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"db73019d-13c4-4882-9df8-391eb926c986","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:40:00","totalConnections":1}
{"durationMs":2.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1384091a-ab8b-4ff8-9434-47fc834fbd57","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:45:00","totalConnections":1}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b651c722-6451-457b-87cc-39de443bea98","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:50:00","totalConnections":1}
{"durationMs":2.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"88b75e61-b2e0-4d80-bd6f-d23716ebfe01","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 08:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 08:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 08:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 08:55:00","totalConnections":1}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bd896821-7740-4899-92ce-14aa3f4b6bb0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 08:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 08:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 09:00:00"}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1aa83691-a0aa-4327-8570-a8455d2d8435","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 09:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787378400745-9GIQS (2a4c025c-211a-4b34-8f15-337e157a16e4)","service":"cbc-sms","timestamp":"2026-08-22 09:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787378400719-6NYO2 (49ef1bdd-b4d2-445e-b801-c093a4d2cd28)","service":"cbc-sms","timestamp":"2026-08-22 09:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787378400737-B9IJ1 (8b397ffb-0833-4752-8e1a-88a842a5948c)","service":"cbc-sms","timestamp":"2026-08-22 09:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787378400754-SF1QD (eafc7416-7948-4014-8624-bdb2932e02ff)","service":"cbc-sms","timestamp":"2026-08-22 09:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 09:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:05:00","totalConnections":1}
{"durationMs":2.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b766d7b-463c-47e4-84f8-0d0a348bfc1b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:10:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"71326007-1de6-46b1-bbf9-201d9c0de281","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:15:00","totalConnections":1}
{"durationMs":2.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7585904c-025e-40b5-8dd8-b974df23fd03","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:20:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5ee0e467-8dc3-4fea-a83f-22e425fe0b88","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:25:00","totalConnections":1}
{"durationMs":3.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eec7d353-dd92-49b0-a526-f0b1903d77db","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 09:30:00"}
{"durationMs":1.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4a19c0cb-dd27-416f-8bca-39ee67aabbcc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 09:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787380200100-KWYG6 (7bb2af16-928f-4eca-b49f-9add24935b92)","service":"cbc-sms","timestamp":"2026-08-22 09:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787380200128-UV9HF (86112141-d7c8-4c4a-bec1-85ab90e8e7e5)","service":"cbc-sms","timestamp":"2026-08-22 09:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787380200118-1INI8 (a0ac0d32-0c2a-4863-afd6-9f7402d80066)","service":"cbc-sms","timestamp":"2026-08-22 09:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787380200137-ILNRQ (d1950f0f-38d6-4010-b938-432d94cc377e)","service":"cbc-sms","timestamp":"2026-08-22 09:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 09:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:35:00","totalConnections":1}
{"durationMs":1.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bb882a94-51ac-4e07-9446-ddad6fe23c62","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:40:00","totalConnections":1}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fcee8fe3-6075-460b-af85-fbcc7ae0561d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:45:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b26eb26a-1e8c-402b-b404-2e03a3cd37fa","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:50:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c05884a4-f1f1-4a83-9ed7-65df23964217","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 09:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 09:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 09:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 09:55:00","totalConnections":1}
{"durationMs":2.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e5bf4292-2ebe-46f1-a963-1ee41e67190b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 09:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 09:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 10:00:00"}
{"durationMs":2.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"24bfd5d5-7edd-4d3b-b1b5-6c5373499593","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 10:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787382000706-2VO7X (04f98269-9853-4226-8bca-f03270677169)","service":"cbc-sms","timestamp":"2026-08-22 10:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787382000714-T0EYK (2d9ef047-449f-48f3-b615-d432babda2e0)","service":"cbc-sms","timestamp":"2026-08-22 10:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787382000681-ON9GF (4cca0410-5bf2-4a96-be25-a1b20e6038c6)","service":"cbc-sms","timestamp":"2026-08-22 10:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787382000698-94HH8 (7fe95e01-9859-47bc-bbd8-bba6febc3e22)","service":"cbc-sms","timestamp":"2026-08-22 10:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 10:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:05:00","totalConnections":1}
{"durationMs":4.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3425a80-29cc-40d1-87c5-a66392fc3fdd","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:08:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:10:00","totalConnections":1}
{"durationMs":3.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d717b578-58e6-414c-b73c-cb7ed308cbc3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:15:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cb608b6d-a41f-4a1a-b232-184c82c85da1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:20:00","totalConnections":1}
{"durationMs":2.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff3f6f20-3dd0-4774-b14c-0eb950897f9c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:25:00","totalConnections":1}
{"durationMs":2.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0e9a8b55-0db5-4625-811c-3c326096ba97","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 10:30:00"}
{"durationMs":1.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"87d0d5aa-3837-4b40-8c1b-404db02cb5b7","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 10:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787383800216-P0GKS (073a791c-e97e-4ca1-a8d0-d21e46695952)","service":"cbc-sms","timestamp":"2026-08-22 10:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787383800207-5TWXB (23f5052d-1f3b-4a97-970a-504e8cf1a67b)","service":"cbc-sms","timestamp":"2026-08-22 10:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787383800168-0DBU7 (5e8ba368-57a3-4708-8d34-43c20f5d0706)","service":"cbc-sms","timestamp":"2026-08-22 10:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787383800196-9LXZV (923bb238-39f8-4f20-8cdf-e09a3f136372)","service":"cbc-sms","timestamp":"2026-08-22 10:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 10:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:35:00","totalConnections":1}
{"durationMs":2.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d86708b5-677e-42c9-8300-3c7b42104e64","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:40:00","totalConnections":1}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5ff2c3c2-a831-4037-bb94-fdace99167ec","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:45:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2e9ae2ee-03da-4be5-94ab-69e419e93d35","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:50:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"183ad023-f3f9-448f-b65b-649c5a0e2b7b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 10:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 10:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 10:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 10:55:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1b047ec6-15ad-4dd4-89b1-04ba127a30c2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 10:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 10:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 11:00:00"}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ce526554-87bd-4a8e-a868-4741df3fa36e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 11:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787385600717-5J89J (a9a0ee64-21b0-4a92-b7a4-322d21d92b3b)","service":"cbc-sms","timestamp":"2026-08-22 11:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787385600776-C1CV3 (b9b2006d-568d-48bc-84d2-232ffc50ed1a)","service":"cbc-sms","timestamp":"2026-08-22 11:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787385600765-9ZFN1 (bef247cc-71b3-45ed-aede-6d0c3740aeef)","service":"cbc-sms","timestamp":"2026-08-22 11:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787385600755-BPFOE (f4632d0b-ed8c-4d40-aad7-adc5a7ea4c0e)","service":"cbc-sms","timestamp":"2026-08-22 11:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 11:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:05:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:05:01","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d0cb1bd-34bb-4450-8925-ca799cb05af6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:10:00","totalConnections":1}
{"durationMs":2.89,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"962afe79-d8d5-4dae-8da5-046955b3f457","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:15:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab025241-b2ce-4ee4-a0ab-743856c7e40a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:20:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"27eee513-3ddb-4ba9-8afc-abf88b5c1a11","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:25:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fe8e3fa-733e-4016-a1c3-26716493cf49","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 11:30:00"}
{"durationMs":2.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3c4e0e83-06f7-486e-9d37-1a692c495566","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 11:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787387400313-0R5MI (15a4e340-ec61-4b69-bc7f-ddc2518c153c)","service":"cbc-sms","timestamp":"2026-08-22 11:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787387400274-43HEF (23ebc10b-7d54-4174-9fd3-6a82b73f84c8)","service":"cbc-sms","timestamp":"2026-08-22 11:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787387400327-K637O (36534cde-5be1-4e8d-bed2-fede9c1cae94)","service":"cbc-sms","timestamp":"2026-08-22 11:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787387400299-371M0 (40fd9839-b12d-4fb1-95d9-2613b1141585)","service":"cbc-sms","timestamp":"2026-08-22 11:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 11:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:35:00","totalConnections":1}
{"durationMs":2.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e4a69fc6-8f25-4d82-a725-6d57f1f43330","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:40:00","totalConnections":1}
{"durationMs":2.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a2a475c7-00df-4eae-8951-a77a90cbe46a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:40:01","userId":null}
{"durationMs":3.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8c90137f-c748-4ea7-bcb2-0cf640d0be77","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:40:41","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:45:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:45:01","totalConnections":1}
{"durationMs":2.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f30350f-6c70-41e3-8476-37cde102b46a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:47:00"}
{"durationMs":3.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bc4aeea0-56e5-459a-b72c-f51037dbf4cc","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:47:29","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:50:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d95c3ed-e4f9-4c64-9d98-241d41467f52","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 11:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 11:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 11:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 11:55:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d82d3790-c5a6-45cf-bc4d-02d74466331a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 11:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 11:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 12:00:00"}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1e2e0637-ee53-4072-81dd-c6bf726c9b99","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 12:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787389200783-OXS2L (05cec200-2d0b-4fb6-93ab-8b53166e4696)","service":"cbc-sms","timestamp":"2026-08-22 12:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787389200805-H6L6G (ca9070a9-1afc-4577-beb7-cf854a5ac22d)","service":"cbc-sms","timestamp":"2026-08-22 12:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787389200813-Y3T20 (de3a2bee-982b-4fd7-8fe2-551a0736c94b)","service":"cbc-sms","timestamp":"2026-08-22 12:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787389200797-ZB3MW (fa120c64-424d-4119-9551-a502c22f39a8)","service":"cbc-sms","timestamp":"2026-08-22 12:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 12:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:01:00"}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:01:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"56557308-872c-4b40-86a7-129cab050709","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:01:09","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:03:00"}
{"durationMs":3.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d9fb0cbc-c12a-4d57-9953-3e2f1c230b0d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:03:05","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:04:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":28,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:04:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:04:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7d2cc5e0-0cd0-4713-86e0-bcb3324d1c49","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:08","userId":null}
{"durationMs":739.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"1f3c7515-a6a0-4ceb-a18b-8cf43a080fba","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:09","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:04:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:04:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6c265359-863e-4443-9a14-9e5afaec2bce","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:09","userId":null}
{"durationMs":36.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"0b22c392-1916-4283-87d1-198641014693","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":75.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"5abbe556-3b4e-4111-ae3d-1ec884d64a95","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":258.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"2c124e39-2140-4e2a-9813-a373741f3421","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":252.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"e811a4f4-c87c-447b-a23c-316551706756","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":238.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"702d9f09-9b90-4036-9951-552723f28889","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":149.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"90ce73f0-e8e2-4c89-be79-3a5ee4031474","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":153.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0388233e-c86e-4d7c-b26b-9dd57fcc92e0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":76.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"46db6085-bd1c-429a-af48-f04d303f9a23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":72.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"0d5dd8ca-4e27-46e7-9c73-33f45001ee89","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1136.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":427.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f8ae904b-4180-4b68-be43-172e163082d0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"6439c80b-a911-4194-b8ab-60fd04d16d1c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":86.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"d17fa495-60a4-461b-9259-9e6ddc94750b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"8ad6e874-bf65-46b9-8db1-e1e31b871331","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":75.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c078369e-1cca-4459-9542-1cf7dbc79d52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":71.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"f8c574b7-f0ca-4cf4-8036-35b46bd1cc84","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":76.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"de1b806c-a4ca-484e-8558-b5cb3a72692a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":84.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"0625a24f-2374-4e3f-88f8-ef3fe21c3713","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":82.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"6cc1122c-a4da-427b-b4a5-7d17b209faf6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":477.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":717.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":723.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":723.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":686.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":704.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":707.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":711.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":472.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":524.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7ba5325a-217c-4358-ba8f-40ae52c70cec","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":488.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":506.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":510.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":510.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":511.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":513.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"56817062-1e16-441a-8245-23688bdda77a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":170.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"c0e0df27-5bea-4d52-b61b-9d1d516ca54c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787389467715-387738","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787389467715-387738","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":524,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787389467715-387738","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":524,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787389467715-387738","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":548,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"10c275c2-0dff-42a1-959a-256a9fdbb9e4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"b8e1b8ed-e725-455a-b2c7-d64c38f57be1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:04:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":615.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":522.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c82c55aa-3daa-4cee-af70-d98726032040","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":61,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bdc83d84-5673-4814-8a8d-097b9bb5f5b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Invoice","name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f926d266-0628-4787-a747-ae6f913ace17","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:43","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":51,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:04:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"55ba8c06-35ac-431e-a435-c3dd6114ed77","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:04:44","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:05:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:05:01","totalConnections":1}
{"durationMs":2.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a88d3b09-1495-4f45-b1c9-9bc534bd455d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:08:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:08:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:08:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"href":"/landing/index.html","navId":"1787389723478-12871","text":"Landing Page"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:08:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"021d173b-ad3e-4526-9963-5beda521bb00","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:08:45","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:10:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8e2356aa-5699-48b6-b425-ff1c0c8c0cdb","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:10:01","userId":null}
{"durationMs":3.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ce256da5-2c06-42c7-890a-a299ec0292f6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:10:30","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:15:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"45e2cbf9-d2d0-4df2-a74e-b52500cbadb2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:20:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57aa2e27-4298-4130-ad64-e18ffd5c52ac","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:22:00"}
{"durationMs":4.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ca227945-9cb0-40cc-b958-cbbe3ca5cb27","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:22:03","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:22:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:22:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2409c88f-6db0-4755-b608-2c0d8ab3efeb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:32","userId":null}
{"durationMs":953.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"21d871d3-227a-404b-9e6e-5c561297c211","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:32","userId":null}
{"durationMs":25.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"84bad898-b245-4caa-b2c2-09a971798911","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"f60da66a-bb12-49d3-b343-f67c05e53ccc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3773b259-64fb-430a-a92a-ef0c2d89e9b2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":69.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"ff4b412e-df3c-4e4d-834e-5ec0fc011e10","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":48.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0caa1979-f4e0-4a5b-a266-554d164a4250","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"54ebf7e3-c1d3-468c-b7cc-384c3dfeaa37","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":273.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"df649c99-af35-4af2-a7ec-76b82d408688","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":330.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"f42a9a02-9be8-4758-b52c-489c5364c6ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":141.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"77deb3a4-0eb3-46e3-a29c-fe8a78c27b12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":146.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"e5e84273-c6f5-435a-8da7-915eeed9717e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":46.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"de2cd3b6-4852-421a-a1ac-7a3f977bb6d9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":130.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"d3be9388-68aa-49fa-b090-4d3c2e683c6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1371.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":425.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":431.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":457,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":457.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ff605a37-b77a-447d-924a-4fcc1c70e6d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":735.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":612,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":561.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":704.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":786.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":828.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":829.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":830.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b8838b13-5a6c-47e1-8df1-37ce53816be9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":83.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"be5aae24-deaa-4f72-809c-0a5a26f930ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":39.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"efd2c789-4892-43ce-9863-9024c9730432","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 12:22:41","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787390558620-677306","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787390558620-677306","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":50,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787390558620-677306","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":74,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":451.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dfdce764-38f3-46ec-8a71-573a0d5c5563","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":395.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 12:22:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"36852f5a-96da-4e3a-9dc6-73c1eb729531","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:22:42","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:25:00","totalConnections":1}
{"durationMs":2.79,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff22970e-3843-4018-bc65-2021a494199c","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:28:00"}
{"durationMs":3.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab6e10fb-8c76-441a-9321-c951be8165db","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:28:32","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 12:30:00"}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9f28f8e3-26cc-4aef-850f-ef4a359acd02","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 12:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787391000297-WQYTL (33d45198-2fed-4820-bfdc-0c86b03ff29e)","service":"cbc-sms","timestamp":"2026-08-22 12:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787391000333-O4NFF (50906b49-0302-43a8-8102-e0efdba4c27e)","service":"cbc-sms","timestamp":"2026-08-22 12:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787391000324-ZBGVW (66f1b7f7-6dbc-4d12-b54f-a440647fb974)","service":"cbc-sms","timestamp":"2026-08-22 12:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787391000314-V7FGD (b6e6ed80-7fa5-4652-962d-c74aa1f6a434)","service":"cbc-sms","timestamp":"2026-08-22 12:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 12:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:35:00","totalConnections":1}
{"durationMs":2.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0daf3b0a-c139-4f36-83d3-a12f966a6225","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:40:00","totalConnections":1}
{"durationMs":2.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a5000e4c-b850-44b3-8fb6-aeb1b835fad3","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:44:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:45:00","totalConnections":1}
{"durationMs":2.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cdf1a3b0-b2bc-460c-b59d-53fe8dd5a8ff","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:50:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"13a4cc1d-8a49-40ff-a9ff-657d006232e1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 12:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 12:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 12:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 12:55:00","totalConnections":1}
{"durationMs":3.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"230f931e-5f80-4053-a0f9-7d63b896a869","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:56:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:56:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:56:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f82af57-7b1e-4922-a59b-c668014e200e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:56:25","userId":null}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:56:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f0f990d4-fd6b-45dc-ae13-02da6ee75b1d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:56:27","userId":null}
{"data":{"id":null,"label":"Sign In","name":null,"type":"button"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 12:56:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"38685cb1-51d5-4889-b3f8-3ee05275da1c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 12:56:29","userId":null}
{"durationMs":2.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9a1d8377-c1e6-4969-8bd9-1696d5d94547","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 12:56:43","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 12:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 13:00:00"}
{"durationMs":2.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8df8a1d5-511c-43bc-a7e3-dba6d16cf125","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 13:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787392800885-7NONS (02d8919a-5cac-4f38-928c-fd8b352983f9)","service":"cbc-sms","timestamp":"2026-08-22 13:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787392800857-6SRUT (12c6dcbd-ac0d-4520-89c5-a75b47266f94)","service":"cbc-sms","timestamp":"2026-08-22 13:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787392800878-EZCWE (15bf2f21-550c-4848-8d63-723f0c6d6f03)","service":"cbc-sms","timestamp":"2026-08-22 13:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787392800870-AXP5E (6654f3f8-6b27-4227-93f7-e4edae66ac7d)","service":"cbc-sms","timestamp":"2026-08-22 13:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 13:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:05:00","totalConnections":1}
{"durationMs":2.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dc2ffab2-689d-4e88-8086-86afdb965ded","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:07:00"}
{"durationMs":2.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"af48eb60-a085-437a-b074-71e3f1d5c10f","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:07:54","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:10:00","totalConnections":1}
{"durationMs":2.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9565764a-8779-44d6-9fc9-35621d240ad2","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:15:00","totalConnections":1}
{"durationMs":2.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7c2feb45-1b88-4dd0-9e27-d224ff98e504","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:20:00","totalConnections":1}
{"durationMs":4.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6141b175-7c7d-493d-b457-0586510722e1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:25:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"05c238e2-7bd0-4c78-a9cf-d35546235c1b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:29:00"}
{"durationMs":3.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3797c5d-30eb-4c84-911b-4130665685f4","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:29:21","userId":null}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 13:30:00"}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a839692b-464a-4a92-af92-3da5acf54dd6","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 13:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787394600604-3O0LO (56e815c4-deb3-4687-aa2a-e8d0b4fdbc55)","service":"cbc-sms","timestamp":"2026-08-22 13:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787394600561-Y6E1Y (5f232c0d-0ff2-406a-83de-5046a2f63c30)","service":"cbc-sms","timestamp":"2026-08-22 13:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787394600585-LWIZA (a94802a0-78b6-4514-9172-c2c47fa551be)","service":"cbc-sms","timestamp":"2026-08-22 13:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787394600595-1DZ0Q (a7b9c84c-bb3f-4cc8-82c7-828a0eb76de7)","service":"cbc-sms","timestamp":"2026-08-22 13:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 13:30:20"}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"20d7ef31-ae90-4598-b908-925eed5da422","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:30:48","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:35:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"821567f9-9f42-47d6-a6ae-5866f3aca39d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:40:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"232d2e93-1d97-4914-a14f-b4a7477d88b0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:45:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aa20ea25-80ba-4841-af06-769d780e03a9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:50:00","totalConnections":1}
{"durationMs":2.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c189ad11-206e-48b2-95e5-9ac9aa810e45","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 13:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 13:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 13:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 13:55:00","totalConnections":1}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c06fdb02-28f9-4210-9202-2dc642a24027","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 13:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:58:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 13:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 14:00:00"}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b481820a-b61c-4eb3-bf31-2a21375646ad","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 14:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787396400212-26P8L (beecf1c8-e462-42d0-83be-a14f6d7238ed)","service":"cbc-sms","timestamp":"2026-08-22 14:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787396400241-MM895 (4da84e36-fa26-4edb-b473-64a6f2496294)","service":"cbc-sms","timestamp":"2026-08-22 14:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787396400225-HIIBE (40e64521-a49f-4241-9d71-685048065356)","service":"cbc-sms","timestamp":"2026-08-22 14:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787396400187-LLYY9 (2d3b37a2-c106-4203-aff2-3de7ccd903fc)","service":"cbc-sms","timestamp":"2026-08-22 14:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 14:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:05:00","totalConnections":1}
{"durationMs":2.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c7cb39d7-c846-480c-9681-a7cc26380e64","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:10:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d4563aee-dcad-4272-9051-a6921a9fad07","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:15:00","totalConnections":1}
{"durationMs":3.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dd2d064b-7b49-4df1-9355-d1fbbfbb0a8e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:20:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"29bec2ae-6504-4c0a-96c5-ee471e09c299","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:25:00","totalConnections":1}
{"durationMs":2.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1199832c-7587-4a07-a516-be2d15b06283","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:29:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 14:30:00"}
{"durationMs":2.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f54aae78-7da4-4333-afc9-913da0bb3c8e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:30:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 14:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787398200709-ZRXJ7 (fbe58e40-2bd0-45ac-a923-bf14d6b23839)","service":"cbc-sms","timestamp":"2026-08-22 14:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787398200691-6Z9PF (f777588f-dc24-48ee-bd32-81790814ac3d)","service":"cbc-sms","timestamp":"2026-08-22 14:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787398200701-6ZIHP (4e08e742-a304-47cd-b2af-ead1061d8ea1)","service":"cbc-sms","timestamp":"2026-08-22 14:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787398200674-AF63I (4959420a-56de-4855-8f78-a0646cd8e47e)","service":"cbc-sms","timestamp":"2026-08-22 14:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 14:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:35:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"50ef0ee4-0f5f-4b9b-9bbb-67aa674bdc9e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:40:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9aa37783-a6a0-42ad-b6d6-6aedb149805b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:45:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"05a1eb93-c251-49b6-9668-806d89966d12","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:50:00","totalConnections":1}
{"durationMs":4.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4aad31b6-85ff-44e9-aff4-e5d97635fd4a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 14:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 14:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 14:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 14:55:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"74cb90fb-ae3b-4425-a949-5dbe830d4bcf","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 14:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 14:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 15:00:00"}
{"durationMs":2.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2be38f2e-4d41-43bb-a6a1-368649a89955","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:00:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 15:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787400000279-RLQ43 (f90b6ef5-71db-43d3-aa5f-588946c4a1d9)","service":"cbc-sms","timestamp":"2026-08-22 15:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787400000288-40KSE (c479b271-3ada-4c52-8cd0-435b58a35e2e)","service":"cbc-sms","timestamp":"2026-08-22 15:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787400000245-VK0AN (16b4401d-60ad-4463-be35-20b47064552e)","service":"cbc-sms","timestamp":"2026-08-22 15:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787400000266-JZQ4L (7af1e3da-e9c0-493e-91a1-1b98329febdb)","service":"cbc-sms","timestamp":"2026-08-22 15:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 15:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:05:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5fb7cef7-04b5-4c5d-b70f-7b5e5c990692","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:10:00","totalConnections":1}
{"durationMs":3.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"605bff97-45c5-43dc-90d3-db1ab5f9539b","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:15:00","totalConnections":1}
{"durationMs":2.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2b63340c-ed77-4db9-b715-ee059374e48e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:20:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ad3e7183-2649-4b34-aabb-76c7af0138f9","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:25:00","totalConnections":1}
{"durationMs":3.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81a5ad94-c097-4281-87d7-873618985476","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:29:00"}
{"durationMs":2.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"766537e0-f78a-4b52-acc9-019827fd06be","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:29:56","userId":null}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:30:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 15:30:00"}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"08042c7e-0f95-4c72-9a26-eb6b2b026895","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:30:01","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 15:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787401800798-6WDU0 (0763ae9f-2bd3-4bca-b5b4-910718fbf9ad)","service":"cbc-sms","timestamp":"2026-08-22 15:30:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787401800763-M8JGE (301c8bcb-5d51-48e7-82d8-3bbf30ac0402)","service":"cbc-sms","timestamp":"2026-08-22 15:30:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787401800808-WXPFJ (32110282-45ee-4e21-8313-76656b11b071)","service":"cbc-sms","timestamp":"2026-08-22 15:30:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787401800786-4855E (cadbaf1f-0bfc-494a-8e8c-7c4b58c67dd2)","service":"cbc-sms","timestamp":"2026-08-22 15:30:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 15:30:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:35:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:35:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:35:01","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f03f1c24-6bc2-4fac-970d-5c26e086f881","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:40:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cf00f2e7-9b54-44fb-a14d-4818781dc7a0","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:45:00","totalConnections":1}
{"durationMs":3.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1590429-39c2-4ab1-aab6-9c8fa47dc65a","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:50:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dc31ccfd-5468-4127-94a5-c0218b23a38d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 15:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 15:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 15:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 15:55:00","totalConnections":1}
{"durationMs":3.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8e1bf9b7-8872-4757-9886-9b3a3b74967e","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 15:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 15:59:00"}
{"level":"info","message":"[CRON] M-Pesa reconciliation started","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:00:00","totalConnections":1}
{"level":"info","message":"[CRON] M-Pesa reconciliation completed. 0 stale marked failed, 4 auto-matched.","service":"cbc-sms","timestamp":"2026-08-22 16:00:00"}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"21d6c184-61ff-46a2-b649-f6fc84a92c7d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 16:00:02","userId":null}
{"level":"info","message":"[Payment Email Catch-Up] Found 4 payment(s) missing emails","service":"cbc-sms","timestamp":"2026-08-22 16:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787403600404-IM198 (3966bd60-332e-4a9e-8689-7ebf91115bca)","service":"cbc-sms","timestamp":"2026-08-22 16:00:12"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787403600411-JC14M (545fbeca-348d-45d1-be95-d386b7b7645d)","service":"cbc-sms","timestamp":"2026-08-22 16:00:14"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787403600396-1J61C (ab572897-dc09-4797-ad68-e4d5d87d39f3)","service":"cbc-sms","timestamp":"2026-08-22 16:00:16"}
{"level":"info","message":"[Payment Email Catch-Up] Queuing email for payment RCP-1787403600380-O3PZO (d369fe5f-5ae8-4c9a-a6c8-0ed890452c15)","service":"cbc-sms","timestamp":"2026-08-22 16:00:18"}
{"level":"info","message":"[Payment Email Catch-Up] Finished processing 4 missing payment email(s)","service":"cbc-sms","timestamp":"2026-08-22 16:00:20"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:05:00","totalConnections":1}
{"durationMs":2.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1c551238-85d4-462c-8f71-5ba68ba6f48d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 16:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:10:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"869e4322-b494-4e6d-8ad9-f28cec785437","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-22 16:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:12:00"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-22 16:12:54"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-22 16:13:02"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-22 16:13:12"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-22 16:13:12"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-22 16:13:12"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-22 16:13:12"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-22 16:13:12"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:13:13"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:15:00","totalConnections":1}
{"durationMs":8.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"072f2e2e-b0ad-4062-916a-1ece50a13045","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:20:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f14fc81f-ac1e-47e5-8664-00b0c9581945","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:25:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0188f6ab-7afc-4e0b-8970-ecad9052bbbc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:30:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"04966168-5876-44d2-a204-57fb415f496a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:32:00"}
{"data":{"href":"/landing/index.html","navId":"1787405525438-701616","text":"Landing Page"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 16:32:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"abef1539-49c4-4147-9959-b7e8fa5fd0c6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:10","userId":null}
{"durationMs":3.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7138f695-865f-42c0-880d-e4166fd605ba","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:21","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 16:32:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 16:32:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5f71cfd1-accd-4c8b-ae31-72fe637ec980","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:33","userId":null}
{"durationMs":888.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"8f550e50-d005-44f0-b160-95a183d80329","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:33","userId":null}
{"durationMs":60.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"9bf61657-ae51-4594-98e3-adf468b38c12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":146.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"605c4e5f-d872-4ecb-8fc7-8a035ff6c2df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":502.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"6e0b1837-29b0-4abf-bccd-d33617fa9315","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":526.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"8bb98b80-60d0-45e5-a899-295225655da3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":524.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"d9682abe-80d8-49c2-b572-e7bfe93d210b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":250.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"f984b7a6-bb59-4e12-9ee0-c4ecf57f3576","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":371.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"b18032dc-9b6c-4907-842b-13d20794c9a8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1302.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":541.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":58.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4ce0f247-e689-4f2d-9390-a5750e19a215","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":621.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8f6143f5-3788-43d6-a556-353bc3a5f8a6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":286.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"8eb00b3f-6b5e-48b7-865f-d1e68bd49358","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":205.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c59da6e2-95d1-4caa-b3e0-e341b0808ea0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":224.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ebc71df1-e242-4948-9023-80e33b2d65ca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":232.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"104a49bd-b036-4142-9a06-f96621f15711","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":236.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"7a2d122b-1024-43f0-81d0-96ad1d58a0f1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":244.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"56923f1b-f8c8-4295-b88f-b9365984c5fc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":44.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"8d6aeba4-217a-4506-9ce8-f830d3905977","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"5fbc7c2c-de1b-4419-b959-97b79db4089b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1722.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1726.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1727.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1728.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1735.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1649.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1654.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1655.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1656.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":620.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":649.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":718.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":719,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a30718f1-8417-4303-afc7-216c5d932718","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":131.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"b26e947e-8206-4766-a1b9-c1d6fbbef0c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":143.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"c5cad848-d5bc-4284-8ebc-114418ee6dac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-22 16:32:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":884.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":921.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1653.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1677,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-22 16:32:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e2413771-1afc-4b7c-af78-932c954ae0a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:32:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:35:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3bf20c4d-e0e5-459f-afe2-227b1cd51abb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:40:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a6391de-c60e-4e74-bc61-c736c769c8a5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:41:00"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-22 16:41:22"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-22 16:41:24"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-22 16:41:24"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"Port 5000 is busy, trying 5001...","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"⚠️  Port 5000 was busy, using port 5001 instead","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5001","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:41:25"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:42:00"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-22 16:42:35"}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-22 16:42:35"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-22 16:47:35"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 16:47:37"}
{"durationMs":15.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a20e1cfc-5d2b-4f1e-9188-87925d7d33b9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:48:00","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:50:00","totalConnections":1}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"03760087-a7c2-4fe0-a618-2edcab5df1d6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 16:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 16:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 16:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 16:55:00","totalConnections":1}
{"durationMs":2.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"608e7cb3-30e0-461d-a7b1-dec9cbe13df9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 16:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 16:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:00:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f22e37a1-bf86-49a0-9c61-1501454a949e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:05:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5cfbd14a-7d61-4722-bf72-c2af993c95bb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:10:00","totalConnections":1}
{"durationMs":3.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"30d1cb6c-e53c-4c47-987d-f85a750d8234","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:10:02","userId":null}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-22 17:10:16"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-22 17:10:41"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-22 17:10:43"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:14:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:15:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:15:00","totalConnections":1}
{"durationMs":8.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2bab397f-c9ea-48fd-bbfd-14fc58224aa9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:20:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57633e12-0250-4345-8b32-1e5c5c67752d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:25:00","totalConnections":1}
{"durationMs":2.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"281545ae-ca37-4d10-86ef-d31d5ed1bb73","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:30:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b8c99a2f-f168-48f9-9d05-4285b4218466","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:35:00","totalConnections":1}
{"durationMs":2.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"881bf5f9-a43e-4e12-9a66-88666554c5fa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:35:02","userId":null}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e5d1dadb-588b-48bb-8b91-42db540584f5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:35:07","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:40:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b1a6fbf3-51aa-4d4f-899d-ae3822c68d9c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:45:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ac83759d-5f8f-4683-ac87-fb53820ace77","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:50:00","totalConnections":1}
{"durationMs":3.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5a82ac1d-a11c-4d98-8d9a-fe950d6ea285","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 17:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 17:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 17:55:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 17:55:01","totalConnections":1}
{"durationMs":2.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"59b8a4f4-592b-4557-80ee-9ebbaf0082e8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 17:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 17:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:00:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68addcba-9dc8-4dd2-85ff-1b41fb8015e4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:05:00","totalConnections":1}
{"durationMs":1.75,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"441f4360-cea5-4d03-9514-b3deab377a8a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:10:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"112f216c-d629-470c-9cfb-786fb110d980","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:15:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"841f8a55-5007-4ab9-83da-1e0906e50542","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:20:00","totalConnections":1}
{"durationMs":2.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2a6b7f38-9adf-4aa9-8935-5d8a62cfc1a7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:25:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"05f8f48f-f6ee-4ce4-a2b7-c2de12e3fa0c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:30:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fa13a584-bc27-4658-a6c5-65e5f0440c57","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:35:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f234986-533e-480b-be65-cf9a6394847f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:40:00","totalConnections":1}
{"durationMs":2.72,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e5bbfe7d-9a08-450c-b1bf-878f5d37356e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:45:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"83b5a5df-a940-40e1-a23e-8989ae7d3632","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:50:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f4c7c0f6-a494-4b42-b948-98694796de35","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 18:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 18:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 18:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 18:55:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6f4cc341-d862-4324-8a44-dc0cf6e156fb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 18:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 18:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:00:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c92529ff-aefe-445d-becb-68da46edbac5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:05:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7313afb3-cdfb-462d-b705-4a6de9e28100","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:10:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"156fc21c-c21c-4c19-89fa-3a827a0cedf1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:15:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68b02d24-fb43-465f-85a0-1590f6ec5381","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:20:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"318ac0ac-640e-4d58-9ca9-8f1a9e7c32e6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:25:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1ed2562-2229-4042-88d8-8d07d81cc58f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:30:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"20c92eae-e67c-4cd9-98fd-4b4a3224c27c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:35:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b84e07d4-e616-47fa-9f21-5de08acaed60","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:40:01"}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e058fd84-47d2-4100-a5a6-511431101caf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:45:00","totalConnections":1}
{"durationMs":1.87,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f12f5e50-8f17-4894-88d6-a7fc14971610","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:50:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"69c4be94-a2da-44b4-b093-9ba99f3c6008","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 19:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 19:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 19:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 19:55:00","totalConnections":1}
{"durationMs":1.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"173d1ad6-31a6-4c86-a842-1885dd73dd71","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 19:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 19:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:00:00","totalConnections":1}
{"durationMs":1.67,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e7024b2c-b38f-44b7-add7-7ce23ebc374f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:05:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8c2db5c8-197c-4bc5-a668-c3018f8f2394","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:10:00","totalConnections":1}
{"durationMs":1.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4bd72a3a-46f5-4dd9-a573-caacfc67b0e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:15:00","totalConnections":1}
{"durationMs":2.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fae6b6b2-0afd-466e-82e8-35aa3d64bb15","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:20:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7a770f75-be1f-4779-9e4d-24cc334bbf65","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:24:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:25:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"db0d818f-4733-4daf-83bc-50c891c66ae5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:30:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"320d8c8f-4c06-456d-9e08-ef845136cb00","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:35:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"157b8859-9197-47a2-acd5-6ef924bf0cb9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:40:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"328f0511-0657-49f3-8244-9a71d3865026","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:45:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60456a99-c017-4767-b317-57a8f000d30d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:50:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"372a249f-b334-4dc1-b3d0-b89b17f6f6ae","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 20:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 20:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 20:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 20:55:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e19562a9-4887-4057-8b85-fef083ae0699","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 20:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 20:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:00:00","totalConnections":1}
{"durationMs":1.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"94cf9646-2aa7-44ec-bd11-5c1d5a5d75ac","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:05:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e26a4b3f-c61b-4ddd-9c04-d24f231e7831","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:10:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0f9633ed-0dc9-4521-b804-a7c2083b0d7c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:15:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b5bebad6-1fe2-4eb3-92b6-10069731c52f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:20:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"069321aa-ecf1-403e-8af1-dddb5e604f70","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:25:00","totalConnections":1}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a9e63d6c-f77d-480b-adb8-1930fd51cf26","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:30:00","totalConnections":1}
{"durationMs":1.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2caafb7c-1718-432f-bc06-533af4a3ed8b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:35:00","totalConnections":1}
{"durationMs":2.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1cc17f99-b4e5-4ab8-8a31-8896ba598eb9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:40:00","totalConnections":1}
{"durationMs":2.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2303c787-2146-436e-88fa-7c900d0179e0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:45:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4d1aa8ca-fc41-4c86-8cdc-747d89ddc83a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:49:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:50:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:50:00","totalConnections":1}
{"durationMs":1.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f286d4d6-5715-4368-894a-1ba712ddac2e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 21:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 21:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 21:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 21:55:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"284c9845-cfa3-464c-b0ab-8d493c420431","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:58:00"}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:10","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:10","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"durationMs":5.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"61da5c5f-73ae-4dda-8138-15426c174c5e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:58:10","userId":null}
{"data":{"id":null,"label":"Register School","name":null,"type":"button"},"durationMs":40,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:13","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"durationMs":2.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9e3df92e-a4c0-4979-b52f-788a2e89d65c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:58:13","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":34,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:15","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":35,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:15","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"durationMs":3.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3fc62e47-3080-4d1c-a236-96a2461a3704","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:58:15","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":49,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-22 21:58:16","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"durationMs":2.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"daef9392-d273-434d-89d2-84d1dc8944e4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 21:58:16","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 21:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:00:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"76902793-ab8b-4811-a620-7e80d07b8145","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:05:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"de3457fe-2b14-44f5-9533-cdd41fd6aa32","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:10:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0bc0077a-1221-4887-a438-078bdee665d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:15:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"113c2fcf-c013-467a-a45d-c0121a22d13c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:20:00","totalConnections":1}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6541ee8b-a773-4c4d-b0da-f4ffa6e0f50c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:25:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f8ef7abf-8c24-4fed-b5ba-2b8c80bd9e17","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:30:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"61d83f95-a471-4dbf-9209-70a131a9d675","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:35:00","totalConnections":1}
{"durationMs":1.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8ccae539-3644-4fb6-bbfe-1eaf28b6ccc9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:40:00","totalConnections":1}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f21fc830-a35c-4887-8905-0033c7c29895","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:45:00","totalConnections":1}
{"durationMs":1.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2c932846-366d-4ec1-8ec5-eb0db817a89e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:50:00","totalConnections":1}
{"durationMs":1.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"18545a86-f087-4d1e-982b-c6d553e7218f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 22:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 22:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 22:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 22:55:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2a32e8c1-b2ef-48fa-8f7f-f6f3de0ca719","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 22:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 22:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:00:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"249e32ba-02e8-4011-a88e-51391122dc7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:05:00","totalConnections":1}
{"durationMs":1.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a6e4ed3d-e15c-4e94-98f5-9edc86757f74","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:10:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8625ee6c-6733-4d37-8b07-a4f587156f1e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:15:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c326fa3a-e9a6-43ab-8520-833522b17628","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:20:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"82316edc-8289-416c-8648-9bc4b34e1099","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:25:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"486474f6-d023-471e-bf90-7f79d83b3ed1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:30:00","totalConnections":1}
{"durationMs":2.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"558acc10-8cd9-400e-ab83-15e68f2b73aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:35:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c98d14de-f453-4ce2-952c-f057193aa921","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:40:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1148a18f-2d6e-4557-a6c9-9ef84d1820f4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:45:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be0e0e7a-6efb-4424-a821-1a9abfc38b64","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:50:00","totalConnections":1}
{"durationMs":1.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"200dafe1-e21d-4b63-bac1-94d6578a8b19","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-22 23:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-22 23:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-22 23:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-22 23:55:00","totalConnections":1}
{"durationMs":1.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2dec8a9a-3baa-4287-8e90-800fa633d9b4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-22 23:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-22 23:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:00:00","totalConnections":1}
{"durationMs":1.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"49535ed9-f3b1-44f6-9a06-ef5e5a9a0dad","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:05:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b752b41b-aa1b-411b-907e-b5cd61ed7aa2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:10:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"66975720-154b-4486-89c7-3ff094b9bda4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:15:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"46d1217d-e185-4748-80f1-b7f9c8d400b8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:20:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a4156eed-5c34-4ff4-b10c-1854aa590f91","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:25:00","totalConnections":1}
{"durationMs":1.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1dea2826-2b99-4baa-a68a-024afb0bba1f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:30:00","totalConnections":1}
{"durationMs":1.69,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43b33dfa-b43c-4d3e-9b6b-885a09bde0a7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:35:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2896a189-73ef-44bc-a90a-bacf1f0b8f7c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:40:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b2c5f5d-9196-4976-adb9-13a9aa942334","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:45:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ad3e1abc-1646-4b1f-af86-e5ef05ae8daa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:50:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ed71f30e-29de-43d4-87c2-e83313b56b7d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 00:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 00:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 00:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 00:55:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ce0800c-3f2a-40eb-bc9c-8c7d02892dae","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 00:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 00:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:00:00","totalConnections":1}
{"durationMs":1.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b018e438-c44b-4f80-9e7f-36dcebf8a23e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:05:01"}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"66902ad6-2aa1-43c8-89c2-107af44cf0d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:10:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3367d676-38d2-401e-85cc-4f92806ac3a9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:15:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e68d9d89-ea82-42cd-bbcb-8aa8c7965475","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:20:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4aae79fe-6712-4068-8284-6bb61753de12","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:25:00","totalConnections":1}
{"durationMs":1.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3b819b41-2729-422c-9f89-7bb81840091e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:30:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"af4a07bf-eae5-4251-8055-74d0f40273f7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:35:00","totalConnections":1}
{"durationMs":1.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ec626123-5087-4753-8715-895fd8f694c3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:40:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b957f641-730e-4d93-a880-7a7357cbacc3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:45:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"654247a6-43b2-4ce1-8794-bce0d72ec962","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:50:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81282ca6-ccec-40c2-8ce4-8e7afe4c69db","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 01:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 01:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 01:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 01:55:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"39affe65-2075-4992-a46a-ac6e9f6a07e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 01:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 01:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:00:00","totalConnections":1}
{"durationMs":1.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d9cff1be-8dfe-470c-9acd-c992a91d2f5f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:05:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4ab22b47-2e6c-4428-801a-7b94671169a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:10:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6ecc7c55-73b3-472e-b14c-458da02b007c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:15:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5559a493-6e75-4388-86ce-57aff83470ea","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:20:00","totalConnections":1}
{"durationMs":1.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"868bc47b-61d8-43df-830a-c5bef5a040c7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:25:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ea09f53f-92a4-4fc9-904b-cd481f99033a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:30:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"01340cea-89e3-402c-ac50-91cec5e0fea0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:35:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"038e85c1-4c70-4972-8fcc-2f9168daed02","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:40:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1e114956-fd27-4a53-853f-eaf0466c61b3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:44:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:45:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"62ae6f70-4fd9-4346-9321-24d8fb50d42b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:50:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a2f5c1a4-dcfc-4e57-bbdf-fbae807bdbe9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 02:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 02:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 02:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 02:55:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"da8bcf6e-f30d-4303-a08b-375d0009f7df","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 02:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 02:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:00:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d905c93e-c05e-4f88-b8ed-5d50b202cf4d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:05:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"09453f75-3aaf-4a2c-a452-3fd24f9a310e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:10:00","totalConnections":1}
{"durationMs":1.8,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e8155c2f-c8c9-4a0a-a499-09ae886c096b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:15:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8d9e8010-e8a2-4fed-9afd-a3dd8d40d5f3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:20:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"85cb5ecd-982a-4a2c-ae1e-492714dba62e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:25:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"92010438-e194-4cab-aa01-4e8ab682eb07","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:30:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bea3b0b7-7b48-40ca-bb7a-e7cbbf724e66","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:35:00","totalConnections":1}
{"durationMs":1.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b6a0279-0770-494c-83da-d26d130c8d2c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:40:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5adf9c2c-44a0-4b8a-81a1-9dc617bada88","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:45:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9078c365-f9ee-49ae-a12f-f9f3b41ddc08","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:50:00","totalConnections":1}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"835ddd51-ef02-431b-8968-f1c41cb59d9c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 03:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 03:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 03:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 03:55:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"059a9391-c637-43fb-ba8d-2f840f57a580","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 03:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 03:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:00:00","totalConnections":1}
{"durationMs":1.05,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0f7e9e97-8d25-4c16-8ab9-e7a8903658a3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:05:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ba7981f1-bab7-401a-92c5-bc6e22ec8c19","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:10:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d832fce9-fb8d-4ca3-83bd-34a720c76d58","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:15:00","totalConnections":1}
{"durationMs":1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d0e19c20-fcd6-448c-b259-ca45018b2c7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:20:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0bd06567-34b5-4de1-a74d-f4aa0d27e977","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:25:00","totalConnections":1}
{"durationMs":1.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1a8e3700-8200-4aca-bf8d-8e0fc4868828","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:30:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f9d585a-071d-4f5d-91c8-06ba13b6d3e1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:35:00","totalConnections":1}
{"durationMs":1.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3370cea9-baaf-438e-8e59-dbfb39c8f256","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:40:00","totalConnections":1}
{"durationMs":1.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"55085f4f-5158-4c51-a7bd-a3279f7c0d0a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:45:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c7629c6d-8c9e-4417-a935-61f4071adab7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:50:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7683388f-7feb-470d-b012-69e7b08b3e77","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 04:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 04:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 04:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 04:55:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3715a8cd-62f6-45c5-920c-d1bfa68f4d7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 04:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:58:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 04:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:00:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c616a5e1-dbbb-4fcf-9258-4b3a0b0bf65f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:05:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"851c5961-c905-4851-bb16-12dc654fd556","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:10:00","totalConnections":1}
{"durationMs":1.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3cbb92ee-147c-4cd5-b90f-2a368e8ad497","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:15:00","totalConnections":1}
{"durationMs":1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6a74d4e6-07cb-4950-bdb9-9a755e230ec6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:17:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:20:00","totalConnections":1}
{"durationMs":2.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5ed95aa4-fdf8-4515-9787-295b8902cacf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:25:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3587ee13-832e-4b2a-814a-74fff7e79c45","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:30:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3d820a52-3d35-4fca-934f-9e55e37453d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:35:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f58e753-8e78-4e39-99bf-b794cc308424","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:40:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"50f79f32-b808-4f20-a78a-3d6d6297e9ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:45:00","totalConnections":1}
{"durationMs":1.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bcc69bee-d026-4222-9933-c313314587e3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:50:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e500569-cf25-441e-985f-a68557daf0eb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 05:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 05:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 05:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 05:55:00","totalConnections":1}
{"durationMs":1.54,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a9bc01c0-8121-4687-b88f-26b6f2e2df04","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 05:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 05:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:00:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0d5132c0-0099-450e-a81a-1e7b05f2c29a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:05:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6134e4b5-d424-4373-8c31-8104ad1a3f2b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:10:00","totalConnections":1}
{"durationMs":1.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e13cf7a0-4652-41a1-99d2-e1fa0be85b0d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:15:00","totalConnections":1}
{"durationMs":1.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eaf73fd9-5e0a-49bf-8628-ecaae37b1bf8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:20:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"36f97694-b839-467b-8c25-b69b51497379","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:25:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"674077d7-386a-4f5f-9267-98308f335688","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:30:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e6f5b561-2681-49a1-a993-4e6383d81bdb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:35:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:35:01","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"40160c30-15aa-481b-96b9-a4d724e84c83","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:40:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1522dee9-c13d-4fb4-8c03-c03583e757bb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:45:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9e3a5d09-5196-4be8-bbcf-8af2170a2f4f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:50:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e3f18ac0-a1fb-48be-88ff-a093c5153e7f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 06:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 06:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 06:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 06:55:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f0587d97-5320-40c0-8796-df9f56973c9f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 06:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 06:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:00:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"007cce9a-4a24-42ad-b7a0-b1d670ef6405","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:05:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e0113b8f-87d1-4947-865c-83764190f9a5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:10:00","totalConnections":1}
{"durationMs":1.22,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cf3cc10f-0fc4-48f5-9738-d47151cea4c6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:15:00","totalConnections":1}
{"durationMs":1.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"26efd3ce-048c-4e5d-8ac9-9ffeef29e106","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:20:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6e1d4d54-943e-4e51-bf3e-563f529bfff7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:25:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"10bc9bb7-09bc-403d-b6d6-7d9324dfbdec","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:30:00","totalConnections":1}
{"durationMs":1.34,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6a0915b9-9a82-48f6-b59e-29f2a8af6eeb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:35:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"58f43f12-dde8-4fab-bc3b-cb7930eefc46","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:40:00","totalConnections":1}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9cb2ba03-b931-49df-8e57-9045f0dbf81d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:45:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0365af9d-0c36-4f81-aa87-fcaf06084fb8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:50:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"80463c70-3373-45f7-bb91-7136f4bd7154","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 07:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 07:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 07:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 07:55:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"47bac7ad-4535-4042-8cc2-5becdf22f95d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 07:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 07:59:00"}
{"level":"info","message":"[CRON] Library overdue check started","service":"cbc-sms","timestamp":"2026-08-23 08:00:00"}
{"level":"error","message":"[CRON] Library overdue check failed: Cannot read properties of undefined (reading 'findMany')","service":"cbc-sms","stack":"TypeError: Cannot read properties of undefined (reading 'findMany')\n    at cron.schedule.timezone [as _execution] (/home/aereuxky/cbcsms-backend/src/jobs/library-overdue.job.js:14:56)\n    at Task.execute (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/task.js:17:25)\n    at ScheduledTask.now (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduled-task.js:38:33)\n    at Scheduler.<anonymous> (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduled-task.js:25:18)\n    at Scheduler.emit (node:events:524:28)\n    at Timeout.matchTime [as _onTimeout] (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/node-cron/src/scheduler.js:30:26)\n    at listOnTimeout (node:internal/timers:581:17)\n    at process.processTimers (node:internal/timers:519:7)","timestamp":"2026-08-23 08:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:00:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"815c5f6b-892f-4609-ae8d-791e465bf38e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:05:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"38c65fa3-07ea-43b6-ac64-3609af225305","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:09:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:10:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bf827c10-4bfd-493a-9282-7ad80eb12f23","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:15:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a16ff127-f021-4703-a473-79ad4c29d96b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:20:00","totalConnections":1}
{"durationMs":1.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5000a5f5-3dd5-434f-83fc-84cfefe83b67","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:25:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"be57b5b1-9fde-40e8-bca3-f08c24cc7411","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:30:00","totalConnections":1}
{"durationMs":1.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d5d9b49c-b540-4d22-87b8-664e12766ac5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:35:00","totalConnections":1}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e823344d-f2b6-4f3b-834d-ca463542ef89","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:40:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81abc43b-19da-460f-b2ce-6ce015c9ecb8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:45:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:45:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:45:01","totalConnections":1}
{"durationMs":0.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"65908f8a-0c75-4f93-9be7-af3ed317eb6c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:50:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bdb858fb-7ce7-4082-854c-6ef35e8d1d0c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 08:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 08:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 08:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 08:55:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"79deac34-f725-4781-895f-40744146c6dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 08:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 08:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:00:00","totalConnections":1}
{"durationMs":1.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7038800b-190d-4f54-82a5-76ee48747916","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:05:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57af2b37-af76-4195-a5c9-a1b005a5d46b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:10:00","totalConnections":1}
{"durationMs":1.55,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f963c911-48f1-426a-9ee8-01aeae883a39","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:15:00","totalConnections":1}
{"durationMs":0.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"abd4ef72-695b-4f0c-81e9-3f66cd0e6cf0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:20:01"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:20:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:20:01","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"efd40b01-eb9f-45e5-9f92-3f546e148f47","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:25:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"de533168-9337-43eb-bf5c-a08f8b76cb3b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:30:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"86ba669c-c790-4333-9e49-5d71d3b96dd5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:35:00","totalConnections":1}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9da92cfe-4042-4cf7-8ef4-b93e6d38bb1c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:40:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d31f3fb8-547e-47ae-8103-f5336a5e59d8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:45:00","totalConnections":1}
{"durationMs":0.94,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a695c6ec-c118-4f72-8d0e-38db3b9f4293","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:50:00","totalConnections":1}
{"durationMs":1.29,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b0be91f6-c7d4-4035-829a-c303f1bbd51e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 09:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 09:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 09:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 09:55:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02f54bc3-bc64-4d1c-8c81-d492e90e9fb3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 09:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 09:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:00:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fb4ba0ea-ae2e-4ee9-865c-6a38e7767424","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:05:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"60dd0369-7675-4da7-9498-348354231f59","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:10:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4b36262a-f745-4513-b02e-31b1c8ad4aa0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:15:00","totalConnections":1}
{"durationMs":1.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3e126ca-ec31-4fb4-a376-d7bfc3ef12a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:20:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"094ef4b4-0474-43dc-aad5-52f7b4ec871f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:25:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1650210a-d158-4fb6-8f41-9cd5d201359b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:30:00","totalConnections":1}
{"durationMs":1.47,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a06ec7ef-2e45-4d89-b0da-418bf96f36ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:35:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"87fb9703-977e-4b64-804a-1f799a70a76a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:40:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eced143c-6d4e-4ad2-9878-f11093f81a29","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:45:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7a4d5613-d1c4-4065-a42d-fab188882c67","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:50:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"48ce9f09-a021-4471-942a-747e1d57b07c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 10:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 10:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 10:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 10:55:00","totalConnections":1}
{"durationMs":1.73,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1223873b-34d2-4d4c-92f8-e8afd41608f4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 10:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 10:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:00:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8712b261-581e-4aa2-b6c0-b784e10e2a6a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:05:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3a39c4c5-3abd-4d96-adcd-69531d807d45","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:10:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1ecbea5-2cc4-4f50-9716-1ec788581f54","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:15:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8d131140-5346-4d77-b3f4-b83da725868f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:20:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7d8ba31b-3523-455a-8b9b-9f313ac24e28","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:25:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bd25cfee-7d19-45ff-9f8f-cf8384065cdb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:30:00","totalConnections":1}
{"durationMs":0.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0308352d-5ffe-42bc-a65e-4705caf97161","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:35:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a369f2f3-1701-40bc-87d1-c6edd6b7335b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:40:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ec4fc461-d3cf-467d-b9ac-98fbe4430ae8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:45:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6522f4c1-2d02-4a47-b711-f3a89b77306a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:50:00","totalConnections":1}
{"durationMs":1.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d7c5f8aa-115c-4d68-a21f-0f352a91542f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 11:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 11:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 11:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 11:55:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6b0fc7ce-3f17-4200-a15c-d5a0dcc144e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 11:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 11:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:00:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0848e64a-a3e1-456c-bf9e-f3123c00a2d9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:05:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b95a93b9-7811-4235-abc3-0c9a77d5654b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:10:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"caf675a0-6064-4637-8b92-060ef05cd93f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:15:00","totalConnections":1}
{"durationMs":1.88,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b329bb5c-fe0f-4e0f-8eea-71f7b4cc14b9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:20:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b1760525-2ad1-4221-b058-46728daed585","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:25:00","totalConnections":1}
{"durationMs":1.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fdd58c94-d3fb-4005-aa36-b8d07cea89c5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:30:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c5fed3bd-c88c-4e76-adac-f0c872716a75","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:35:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3ad50a00-93a7-4639-933f-364e65d3021f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:40:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f65d2b05-1aca-4531-a840-d24842e6cc04","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:45:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"05d94fb1-104d-4f08-ac71-b1b9697ea075","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:50:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d48b7e3-5389-4606-bfe5-1b57d971c677","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 12:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 12:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 12:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 12:55:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5632ffe4-c556-4cec-8384-547050f283fa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 12:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 12:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:00:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fded3882-e4b3-4317-8351-f23b30ab94c5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:05:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f744da0e-49bf-489f-92b5-a9ed9cef52a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:08:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:10:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c056db57-8c13-4da0-a981-87395bdc1185","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:15:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f0d0709-7534-43d5-85ee-a552e574eb01","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:20:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"03b6415c-3faf-49fd-b40a-1b5c207995d0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:25:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff9f536a-50e5-4555-b86c-b698685751c4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:30:00","totalConnections":1}
{"durationMs":2.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d11fe9b2-3cdb-41b6-93c2-9152243257ee","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:35:00","totalConnections":1}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43c3dce7-a062-4510-96a7-0758245c5d15","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:40:00","totalConnections":1}
{"durationMs":1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4744256b-7e0c-4bce-a7e7-ea1d422ae327","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:41:00"}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a9f6ed4-6f8a-4b02-9fdb-f7c82bd6f173","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:41:52","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:43:00"}
{"durationMs":2.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02115d02-d038-495b-ad80-7866837dc605","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:35","userId":null}
{"durationMs":17.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"9eecec63-9dba-4878-96e4-91644f301945","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:37","userId":null}
{"durationMs":2.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"ede8d8cf-6b5d-45ce-bdd2-d46b667a33c0","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:37","userId":null}
{"durationMs":2.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"bf98aefe-bf9f-4d34-8074-fec58ccdde7d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:37","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"17ac30d4-4123-4afd-a5d3-281be4d7f397","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:37","userId":null}
{"durationMs":1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"b1df3f07-0c1b-48a7-8ef2-b9e678db8b70","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:37","userId":null}
{"durationMs":5.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"af3ed6b0-1450-464e-a34d-0ed384ede6f9","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":4.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"906330d9-0a47-4e20-9e52-9f5d99f4b7d3","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":1.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"1e03a1b2-2cbb-4cc3-a230-f36fd31d4ad0","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":5.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"dad0b459-d92c-423c-8f55-ec85ec30f38d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":4.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"faf59b44-d657-46dd-bb62-115598c6ceb9","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":3.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"9bf94755-af46-41ce-a250-486bd3cfbd6f","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:38","userId":null}
{"durationMs":3.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"8111a392-05af-475e-846c-eabbced461cc","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:39","userId":null}
{"durationMs":3.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"657ce9a6-e507-4dba-8346-10f3c42154c2","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 13:43:39","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":1377.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/school/enabled-modules"},"durationMs":1378.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":1393.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":1394.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/dashboard/revenue-trend"},"durationMs":1690.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/dashboard/stats"},"durationMs":1690.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/dashboard/attendance-trend"},"durationMs":1690.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":401,"url":"/dashboard/grade-distribution"},"durationMs":1850.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 13:43:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7698fd4a-91d0-4b26-9690-be066e1d29f8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:39","userId":null}
{"durationMs":64.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"263dee36-b0ea-4e89-a394-72695c249782","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:39","userId":null}
{"durationMs":654.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"98bd4489-cc6b-4b59-ad84-4776c2619f00","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":598.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"ad5f9b71-a525-4500-98aa-17d8da77840c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/recent-activities"},"durationMs":2200.9,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/mpesa-config"},"durationMs":2201.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/sms/settings"},"durationMs":2545.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/whatsapp/status"},"durationMs":3093.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":266.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ecb13bbb-1110-4357-9408-141c6f98e10a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":992.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"9f660a33-f059-4752-8cef-31b734290d91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":789.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"f3c10052-b4f6-4b35-bb3c-ff4cb56bb1ff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1079.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5fbd21db-b91a-4f7b-872f-04a0e70720d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1112.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"d205f07f-9659-4efc-b57f-c7fae356e360","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1102.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a3e3c81b-0061-45dd-a8b2-3f50b6963901","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":902.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1ad77866-e14f-42b1-b361-46c4d8f783d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":626.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"d939c8b6-6137-46c8-bae0-188afac787af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1111.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"4ac785b4-f569-41b6-a3d0-ccb976bc7351","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":740.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"bde30b1d-1537-4e20-83c7-d6c02260c99a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1092.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"5e37cf64-f56d-46ab-99f0-eada8ca61af1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1060.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1117.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1462.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1483.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1484.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1490,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1500.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1500.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1504.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1514.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1515.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1664.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:43:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f8db012a-584e-434e-851d-7ea026e3fa29","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:43:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:44:00"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:44:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 13:44:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86edd262-a22f-46bf-ac03-469b64f62806","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:44:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:45:00","totalConnections":1}
{"durationMs":0.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cab8e050-a6f8-414a-932c-f282af0f8892","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:50:00","totalConnections":1}
{"durationMs":0.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"defacfff-5597-4792-8567-46fcc2c27895","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 13:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 13:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 13:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 13:55:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3492176a-c5db-4d98-91fa-21ba0f4156be","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:58:00"}
{"durationMs":2.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"128308da-f618-4c07-a9ab-1f591d716cf1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 13:58:11","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 13:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:00:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d5b503f5-9441-44ec-94bb-1fcd73782050","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:03:00"}
{"durationMs":2.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4cf5c1fb-9e05-4fe0-8a04-6c010b828437","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:03:46","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:05:00","totalConnections":1}
{"durationMs":0.9,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8ccae7d8-bae6-4bee-b3e5-7fb18eb0eb08","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:10:00","totalConnections":1}
{"durationMs":1.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"238e6e77-1c54-43c3-9678-0126e7fc6057","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:15:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1f21df43-d3fa-4fd8-9fed-dfea94706b86","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:20:00","totalConnections":1}
{"durationMs":0.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bf49dbb9-6044-4a78-9a99-b2832dcf6e07","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:25:00","totalConnections":1}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fe95b8c8-ec53-4d93-93eb-c11209c2a534","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:27:00"}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"109fffbb-5a22-40ec-8894-f847736fb039","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:27:42","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:30:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ccd6ceac-fe22-482f-935c-40bbd0a5ffad","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:34:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:35:00","totalConnections":1}
{"durationMs":0.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"743c9504-0f46-4536-b498-7a6307847836","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:40:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7078bc92-270c-4ebe-9ccc-c3e4f833a702","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:45:00","totalConnections":1}
{"durationMs":0.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e5c95da4-2cdd-4b41-b990-a13761935dfa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:50:00","totalConnections":1}
{"durationMs":1.7,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b35e24f7-cef3-4b1a-8fd6-6910b4abc2f5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:52:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 14:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 14:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 14:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 14:55:00","totalConnections":1}
{"durationMs":1.27,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4a89f1ec-277b-4026-8c12-742d37af7840","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:02","userId":null}
{"durationMs":1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a1cbb4b6-2372-4342-9be2-aa2f7e61f33c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:14","userId":null}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c3fc2963-fd4b-40f1-ac1c-d04cee5e12e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:17","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9623358f-bba3-467c-85ed-7d0125b325f1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:39","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":46,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5f657537-0e4f-4718-8294-736ca2118f39","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:42","userId":null}
{"data":{"id":null,"label":"Orange","name":null,"type":null},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.86,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"97ef0176-7c77-4173-abad-a42777395204","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:43","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":48,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:55:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9ddd63ef-aa8f-4a79-9757-214ee1a5754f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:46","userId":null}
{"durationMs":836.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"af3c8a7c-a7a8-48c3-b2ae-0a404b4f2dfc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:46","userId":null}
{"durationMs":55.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"3ed386c5-c621-4508-a8f6-9177ae0e14ad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":486,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"321c9599-c9d5-4232-96c8-90df6b688bcd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":520.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"c5b37c32-48ad-4596-9251-fb9badd55fd1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":312.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"0f23faea-9213-49c0-bee7-870e22ff370f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":552.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"558f7a0c-74f0-4340-808d-31f7f785f565","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1192.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":436.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":59.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75f5411e-5512-433d-99d9-43e579cb27b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":185.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"fb441813-a9bc-451a-a79c-bbe59a3f9010","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":183.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"d5a703d4-a973-418b-b96c-75e0396a59a7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":244.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3fe61df3-ddc9-4682-85f5-6b4f349247ef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":205.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"26341c60-f3e8-43f9-bbf3-462af768cd22","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":187.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"7df9845c-c270-4b29-8d5b-7587c2924633","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":59.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"a921436e-4e29-4296-899c-61c155bda4a0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":267.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"bf5ad863-f8ff-4d2c-8a62-fa3f39e2e3f7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":299.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"97e3effa-6b53-48e2-a308-ac4191fe23d1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":274.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"f96063ff-0d36-4484-a2ef-0fcb04c03e1d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":244.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"bb0f4035-f4d7-4144-b521-6dbdaa42a0d3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":313.82,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"3640f601-fe73-43ae-b435-2ad07edff0fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":316.73,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"5b64914a-a822-49bd-9a0c-d1e4bce2fe11","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":321.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"1e6db0da-2ea2-45e3-9cfe-8ca3289af3bc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":852.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":866.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":876.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":891.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1903.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1667.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1669.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1671.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1672.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":487.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.66,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f95f8c7a-810e-4b03-b84c-828c35118df1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":633.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":643.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":644.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":646.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":675.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":691.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":692.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:55:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a8e0a5d6-5ca4-4ad8-b9ad-17ded71050c0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:55:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:56:00"}
{"durationMs":1.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f56c843b-78a9-4100-bfb9-65d9453054b3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:56:50","userId":null}
{"durationMs":100.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"77a62582-1a66-472f-a927-19f55969943f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:56:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":102.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"ce2bacba-2cdf-4c5c-bc95-3652a8e80964","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:56:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"1b093b38-e00d-4673-9765-6e646bdf600a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:56:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1134.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:56:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1144.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:56:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":548.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:56:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.74,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e23430d9-4d81-4a2e-9ce5-77c772813c9a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:56:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:56:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:56:51","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"620dd830-0d83-45c8-9676-4254ad2b9f1f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:56:51","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:57:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":37,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"href":"/landing/index.html","navId":"1787486216118-854724","text":"Home / Landing Page"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":18,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:08","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8121d88d-5699-4cf8-82e4-47bb24be2888","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:08","userId":null}
{"durationMs":1.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8605f9eb-43b8-4746-8b69-54f12122fffe","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:12","userId":null}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:12","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4454ab42-9618-45c8-aaf7-df86ff1e0d75","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:12","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":28,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":26,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 14:57:29","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71fbcd0e-d00c-40d7-ae6d-1d3633ea5452","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:29","userId":null}
{"data":{"href":"/dashboard/students","navId":"1787486263678-615858","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":42.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"acf6da54-5c2a-425c-ab06-16927c09a072","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":319.81,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6da23865-22a8-45b3-84e4-15c61127066e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:57:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":330.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"a3abc1a6-b2ab-4344-aa8f-e65bf2fc86d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:57:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787486268078-954014","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a932988-7cb9-4e6a-b303-56e1cc557e2a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":61.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"1eb4d4a3-59d5-4f87-a2d6-0a227816f52e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":56.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/subjects","requestId":"c7b818f1-7d1a-4543-8e58-016a92f1a797","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/academics/subjects","navId":"1787486272117-965377","text":"Subjects"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":4402.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":4411.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":4446.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/academics/subjects","navId":"1787486272117-965377","text":"Subjects","to":"/dashboard/academics/subjects"},"durationMs":1850,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486272117-965377","to":"/dashboard/academics/subjects"},"durationMs":1850,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486272117-965377","to":"/dashboard/academics/subjects"},"durationMs":1897,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c745213e-7fda-4fb9-a118-07e156b1417c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":92.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"7eb0659a-73c4-4b9c-aced-d8792012c0c2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":114.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/teacher-assignments","requestId":"2cd417e0-05ac-4607-a1a0-615e018866d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":136.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/staff/departments/list?type=academic","requestId":"b206281a-4e8d-4903-8332-63c3a6422b42","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"758644db-5267-437f-972e-088807efc422","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":112.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"859bad1e-d5cd-425e-ac94-56b368a54249","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":136.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"f91f38bc-a34d-4b28-9ff3-767cf7a7bf15","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787486274317-417476","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/subjects"},"durationMs":440,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/subjects","href":"/dashboard/students","navId":"1787486274317-417476","text":"Students","to":"/dashboard/students"},"durationMs":296,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/subjects","navId":"1787486274317-417476","to":"/dashboard/students"},"durationMs":381,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":736.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/staff/departments/list"},"durationMs":1051.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/teacher-assignments"},"durationMs":1058.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c27e5155-ab7a-4730-83cb-1fba2af22790","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":975.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":1025.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":1079.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:57:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c0e78b2-d47b-4ce1-9f2f-c326fcf4a5fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:57:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:58:00"}
{"data":{"href":"/dashboard/students","navId":"1787486279077-442942","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"849e372a-2f5f-41ff-b736-da67095c8a83","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/academics/subjects","navId":"1787486280742-184962","text":"Subjects"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard/academics/subjects","navId":"1787486280742-184962","text":"Subjects","to":"/dashboard/academics/subjects"},"durationMs":126,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787486280742-184962","to":"/dashboard/academics/subjects"},"durationMs":181,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"74e38bb0-8a47-4e80-9e7a-ce0586d24a0f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"c7ec1e58-d637-452b-85a0-d04fce953bac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard","navId":"1787486282542-200966","text":"Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/subjects","href":"/dashboard","navId":"1787486282542-200966","text":"Dashboard","to":"/dashboard"},"durationMs":259,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics/subjects","navId":"1787486282542-200966","to":"/dashboard"},"durationMs":416,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f66038d5-3be0-4296-877f-aa114889ba2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":81.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"08a466d2-36ab-4265-9493-dd5fc5031316","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":76.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"c0f994a9-b79d-4bd9-b591-01336c25a8d7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1288.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1290.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1292.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.43,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c01f2224-cb0d-45a2-be90-37f4417bf8c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:07","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":3.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e16ca0e2-98b2-420a-bb7a-f4b9b0cadf80","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:28","userId":null}
{"durationMs":201.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"f7fc66a0-7a76-4edc-b9a5-a29232803151","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":508.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"e240255e-8c4a-41bd-bd37-2592db7fc427","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":541.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"feac1f0c-029c-48dc-a40c-ffe6bc3b00fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":515.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"27d1bf1e-7ba2-4698-8bb1-f260aca1f84b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":237.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"ae552ff9-91ae-4135-8353-2202d0fba067","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":251.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"38d57141-8dd9-4f18-9549-ae90778fcb6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":146.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"bd022b4c-07a5-45b8-a8b4-49c2dc3f2ea6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":151.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"1f2495b4-51df-4165-b1ac-da19c043f8e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":232.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0f57291a-f446-42d8-9cc4-2c5e6424008c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":264.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"ac6d0d1c-001e-42a1-b54c-3e7682467430","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":192.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"56f92566-1014-40a9-842c-ede092cc6e35","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":264.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"f99b466d-ba24-4f55-ba42-f262feb7ce78","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":5725.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":5728.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":5731.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":5733.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":588.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":590.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1555.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1647.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1649.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1653.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1654.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1658,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bed246d4-b04c-40e8-ad44-95d3ba426468","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":141.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"18929985-8d63-4998-b4b7-73ea48d85bed","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":141.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"f042699e-1e6a-486c-86d3-43b6c3f9836e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":158.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"1a42b03a-81bf-4480-bbbf-b1973a356157","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787486327390-286137","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787486327390-286137","text":"Students","to":"/dashboard/students"},"durationMs":298,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486327390-286137","to":"/dashboard/students"},"durationMs":431,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0dbe7701-e56e-4959-b98e-8883c288002e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":492.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":495.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":503.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.67,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"79e3e67f-de07-4090-92b1-38eaa7da29ac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard","navId":"1787486330949-949897","text":"Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard","navId":"1787486330949-949897","text":"Dashboard","to":"/dashboard"},"durationMs":195,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787486330949-949897","to":"/dashboard"},"durationMs":349,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:58:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":27.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d8551ded-69b4-4a8d-941e-7567808eea08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:58:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 14:59:00"}
{"durationMs":114.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"f2a3595e-9771-4885-9ec8-cdde4c2e4e39","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:59:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":108.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b36dec48-0621-42ca-b702-b5a61800615d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 14:59:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1097.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:59:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1100,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:59:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5c97abdb-33db-4f80-b9a4-ecf8c1343194","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:59:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":77.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"2222901d-e6b4-4a24-8f85-7c0427d72f96","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:59:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":415.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 14:59:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b98f2a56-7d41-4978-807e-d06170223fb9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 14:59:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:00:00","totalConnections":1}
{"durationMs":0.81,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2920774d-c1f9-4b51-ac35-368e5860bd65","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:02","userId":null}
{"data":{"href":"/dashboard/staff","navId":"1787486416271-316155","text":"Staff"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"74039391-5848-4761-8caa-14b7ad3ee83f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:19","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":362.35,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/staff?page=1&limit=20","requestId":"61947be4-30fb-4666-a693-1a4665118f46","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":93.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/staff/stats","requestId":"e83a76c2-4181-4336-ad1c-873b0ef6f010","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/staff","navId":"1787486416271-316155","text":"Staff","to":"/dashboard/staff"},"durationMs":1286,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/staff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486416271-316155","to":"/dashboard/staff"},"durationMs":1286,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/staff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486416271-316155","to":"/dashboard/staff"},"durationMs":1461,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/staff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eeed6df7-b477-4cb7-8dae-7bb166e545b4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:20","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/staff"},"durationMs":1017.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/staff/stats"},"durationMs":1184.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5bb6b336-d46b-4a66-a2ff-a18fef73bdf5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:21","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":86.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/emails/settings","requestId":"159840ef-105b-47d4-bba9-3b1f2174cbc4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:28","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":94.35,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/emails/history?limit=1000","requestId":"b2015e27-9c3c-4fd5-8c2a-badccf8d3f1e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:28","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/communication/emails","navId":"1787486425815-932599","text":"Emails"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/staff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/staff","href":"/dashboard/communication/emails","navId":"1787486425815-932599","text":"Emails","to":"/dashboard/communication/emails"},"durationMs":514,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/communication/emails","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/staff","navId":"1787486425815-932599","to":"/dashboard/communication/emails"},"durationMs":514,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/communication/emails","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/staff","navId":"1787486425815-932599","to":"/dashboard/communication/emails"},"durationMs":538,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/communication/emails","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2506f5e0-e2ab-46ad-9b42-dce9df0b6eb8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:28","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/emails/history"},"durationMs":432.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/emails/settings"},"durationMs":434,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cdbef8a4-23cf-46be-8ddb-df683e6c4b91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:29","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":79.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"111061ad-3822-4bb5-beb0-8241896199a3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:00:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":77.77,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1403ff44-bc71-4e3b-8bf2-c2ef371c7a76","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:00:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":416.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":420.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:00:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"19267b00-6d35-4141-9bc1-f0e9627f9b85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:00:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:02:00"}
{"durationMs":1.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0dfd2cf2-e8b7-41e9-8c2e-28b2d4fe3e59","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:22","userId":null}
{"durationMs":55.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"2a856aaa-08a2-4887-937d-de4bd428cabc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"51d4034d-55d0-45f5-9f6e-d0f8dfb751ff","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":183.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"4a55bfa1-3c08-4fb3-9e5c-c3547b6fc6d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":596.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"942dd60f-5fb2-4437-9e2f-152e4dbd3a27","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":604.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"72437b47-281b-4a7d-bb87-af36950d3e23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":270.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"cc4dcae8-1b6d-4267-b138-3f0bdc1e39e9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":592.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"319302bd-6c14-4b0b-bf30-06f75bda7a18","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":209.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"371bc1d5-e4e2-4815-b339-b37bb3f390cf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":593.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"5869a6e4-543b-4450-8b15-1d6042ed2ddd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":616.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"a994e2ee-6d3e-460a-8efc-5e2b91857ddd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ea26c674-ef07-4a68-a2ef-37caa7a56942","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":347.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"062eb318-a2c5-4883-b8ef-eb6b36dd3396","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":59.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"f81523a5-b530-40cc-a84a-b4f91be3d60f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:02:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":425.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":717.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1596.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1656.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1664.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1665.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1703.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1704.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1706.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1725.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1879,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":2120.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d66a5a84-e9cf-4d61-9e2f-3f28521cfa9f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"70278257-1031-4f31-9625-69134022152f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":21,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cf25ccee-c771-46c4-b31f-f488cbd4cf29","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"7ef18605-8c89-40ac-b6df-5a39c7b2ee96","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":104.53,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"c8db58d2-eba6-409e-8d9d-8b27d00ed1c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":118.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"9a11cc2f-c8d0-4bc1-b784-f76c6979266b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787486556056-632484","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787486556056-632484","text":"Students","to":"/dashboard/students"},"durationMs":470,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787486556056-632484","to":"/dashboard/students"},"durationMs":642,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d2ce86bd-35d6-4b7f-ad82-b318c2942e2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:39","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":410.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":460.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":465.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b08d2280-50a2-461b-af31-3bea3fdae34d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/years","requestId":"741ee3c1-54eb-468e-9217-135c5868d707","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":44.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"889f81f3-8356-424b-8d00-1b5824555d67","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions/stats","requestId":"c7af4d5a-f29a-44d0-bb40-b45f1d6fce32","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":54.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions","requestId":"ad505171-4b53-412b-b43f-528579184687","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Promote Students","name":null,"type":null},"durationMs":84,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/years"},"durationMs":364.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":379.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions/stats"},"durationMs":691.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions"},"durationMs":710.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"69a22c5a-e37d-4f12-b8eb-144abd26b38d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":44.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"ab1060e8-6077-48d4-a732-ef57cf205b22","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10&status=TRANSFERRED","requestId":"d19a72bf-194b-4a30-9f9a-dbd3e9a13778","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Transferred","name":null,"type":null},"durationMs":98,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":375.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":394.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c4e373a2-1524-4b8d-905c-fe24dd3e565a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.44,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"436eb604-8471-44f6-a664-1b2dc4830355","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/academics","navId":"1787486568365-457482","text":"Grades & Streams"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard/academics","navId":"1787486568365-457482","text":"Grades & Streams","to":"/dashboard/academics"},"durationMs":646,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/academics","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787486568365-457482","to":"/dashboard/academics"},"durationMs":646,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/academics","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787486568365-457482","to":"/dashboard/academics"},"durationMs":678,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/academics","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d22c10e1-7e80-4ba6-a537-f3f9a4af5388","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":460.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:02:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.45,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c7700e98-c2d1-4027-a635-51bb9abbfe6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:02:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:03:00"}
{"durationMs":73.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"8e44b995-4d76-4409-9931-a7fff0c8094f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:03:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"b16ced93-10a9-4d2b-b00d-c2b660318227","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:03:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":403.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:03:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1cdd9422-8cdc-4f83-b97f-a387d016a6ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:03:25","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":374.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:03:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9842847d-27b5-4b76-b963-8696f43f54c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:03:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:04:00"}
{"durationMs":84.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"6fe55b44-7809-46db-9e34-0fdb5f639b10","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:04:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.51,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"74dfa261-8066-40ff-8ef8-b3c583d19bab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:04:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":411.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"21c85717-f069-4d3b-b305-b04b3e3a6e08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":866.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d7cf3304-b3a7-431c-8d95-d463d36a2c25","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:27","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":337.64,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/teacher-assignments","requestId":"5eafa474-f21d-418b-8490-97c19b9120d0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":377.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/subjects","requestId":"5bc3d046-e7ba-4e91-a661-7a81effaede8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/academics/subjects","navId":"1787486689911-709767","text":"Subjects"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/academics","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics","href":"/dashboard/academics/subjects","navId":"1787486689911-709767","text":"Subjects","to":"/dashboard/academics/subjects"},"durationMs":230,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/academics","navId":"1787486689911-709767","to":"/dashboard/academics/subjects"},"durationMs":291,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/academics/subjects","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":29.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c236f64-0ba8-4fac-9545-f65b27bc8522","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":366.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"789a0112-4f2e-45c5-89df-67dde91cbb1a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":381.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/staff/departments/list?type=academic","requestId":"821bf746-d42b-466c-9d82-75346a3e7a0a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/teacher-assignments"},"durationMs":2131.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/subjects"},"durationMs":2156.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":2450.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/staff/departments/list"},"durationMs":2452.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:04:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.45,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b57b8591-3a3e-4880-97ff-bdb1be745cf7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:04:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:05:00","totalConnections":1}
{"durationMs":0.84,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"76c1cd85-e543-421c-8e62-09e7561568eb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:01","userId":null}
{"data":{"from":"/dashboard/academics/subjects","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/dashboard/academics/subjects","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1db03558-19d6-42e7-84d2-6d2336ecd6c9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:06","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ea2ad648-ab88-438e-b82c-a22770327a53","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:19","userId":null}
{"durationMs":565.24,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"0b5b516f-9ef7-471a-b088-2113cde1551e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:21","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":25,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75c717be-4f28-4106-994c-48aa7776b29d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:21","userId":null}
{"durationMs":58.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"95443214-3a6e-4912-8d16-7ea6470cd634","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:22","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ce13b399-2637-4205-9d37-1e58f9e58a35","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:22","userId":null}
{"durationMs":22.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"5f88dce6-a01b-4e10-adc7-06d197d7e2ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:36","userId":null}
{"durationMs":53.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"4c7067cb-713f-464d-a652-47f306c063ec","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:05:36","userId":null}
{"durationMs":75.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"b0252a08-5ce0-4019-a4c0-1ef3384e2ff5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:36","userId":null}
{"data":{"href":"/platform/modules","navId":"1787486733438-380409","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/modules","navId":"1787486733438-380409","text":"Module Access","to":"/platform/modules"},"durationMs":649,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787486733438-380409","to":"/platform/modules"},"durationMs":649,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787486733438-380409","to":"/platform/modules"},"durationMs":734,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":3.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3237ea43-66a7-4eb4-b84f-1e4627d54bd8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:36","userId":null}
{"durationMs":24.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"3902f0cd-036d-448c-9dbf-37b7f3ddbe42","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:43","userId":null}
{"durationMs":46.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"dc6403f2-b0d0-41f6-b767-a061d18e8ee2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:48","userId":null}
{"data":{"href":"/platform/schools","navId":"1787486745786-818249","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/modules","href":"/platform/schools","navId":"1787486745786-818249","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":618,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/modules","navId":"1787486745786-818249","to":"/platform/schools"},"durationMs":618,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/modules","navId":"1787486745786-818249","to":"/platform/schools"},"durationMs":640,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a2627378-b5ff-4311-a8f0-669046afdba5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:48","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":7,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.04,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"80df7b5a-4aa2-4c5c-9152-335f4ee5f506","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:57","userId":null}
{"durationMs":20.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"cf0632da-ac79-4f24-8d2a-375461fb5d26","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:05:58","userId":null}
{"durationMs":34.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/usage","requestId":"39658f22-3060-40ab-b5de-88e8ad99fa2a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:58","userId":null}
{"durationMs":57.09,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/details","requestId":"e7d48c5a-7388-431a-90ec-6dbccb24bc02","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:58","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:05:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"77f92088-642c-4d4c-b8cf-2e47b4cb8c28","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:05:59","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:06:00"}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":121,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:06:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":0.82,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"67f641be-82f2-4c34-961e-002d64294256","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:03","userId":null}
{"durationMs":23.5,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"PATCH","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa","requestId":"4b3ffff9-ed11-4380-8b58-3a4218bc8688","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:05","userId":null}
{"durationMs":41.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/details","requestId":"0c811c0f-9d37-4349-babd-7ccfe69e20e3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:05","userId":null}
{"data":{"href":"/platform/plans","navId":"1787486792604-447662","text":"Plans & Billing"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:06:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","href":"/platform/plans","navId":"1787486792604-447662","text":"Plans & Billing","to":"/platform/plans"},"durationMs":807,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:06:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","navId":"1787486792604-447662","to":"/platform/plans"},"durationMs":807,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:06:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":0.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ba84c01b-4729-490a-8d58-662a3c654223","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:35","userId":null}
{"durationMs":50.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"650fdbc5-ffef-429d-adb5-57d526cd98cc","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:06:35","userId":null}
{"durationMs":68.07,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"f344658e-8cd5-49c5-a980-56630379fab5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:35","userId":null}
{"durationMs":51.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"363ec490-1cd0-44e1-8347-450e294d44aa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:35","userId":null}
{"durationMs":47.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"71836741-3462-45d3-9119-3ed9e5af141a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:35","userId":null}
{"durationMs":68.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"4df6162f-cc06-45aa-91d4-9b45b3d28123","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:35","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","navId":"1787486792604-447662","to":"/platform/plans"},"durationMs":820,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:06:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.8,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f8941f58-f8f6-4385-9889-3ee7626ea569","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:06:36","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:08:00"}
{"durationMs":8.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"d2beea01-5607-4736-b5ee-f7e3db851fb9","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 15:08:54","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:08:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5db67e9e-06bd-46fb-bea3-3e706bcbde28","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:08:54","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:09:00"}
{"durationMs":3.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"cb21bb00-b49a-4d00-8a6f-ce5f4a785082","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 15:09:03","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"876f5158-d326-4f4c-b820-622fc2cbf6d3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:04","userId":null}
{"durationMs":14.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/users?search=&role=","requestId":"e2ed72d8-49be-4b39-a54f-c0e07f020cb5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:10","userId":null}
{"data":{"href":"/platform/users","navId":"1787486947412-730128","text":"Platform Users"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/plans","href":"/platform/users","navId":"1787486947412-730128","text":"Platform Users","to":"/platform/users"},"durationMs":454,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/users","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/plans","navId":"1787486947412-730128","to":"/platform/users"},"durationMs":472,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/users","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d01720af-6379-4b36-8b73-355d99013124","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:10","userId":null}
{"durationMs":17.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/audit-logs?page=1&limit=30","requestId":"70aff29a-cb92-4cc5-b8e2-340a4b68653b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:15","userId":null}
{"data":{"href":"/platform/audit-logs","navId":"1787486952723-44543","text":"Audit Logs"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/users","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/users","href":"/platform/audit-logs","navId":"1787486952723-44543","text":"Audit Logs","to":"/platform/audit-logs"},"durationMs":438,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/audit-logs","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/users","navId":"1787486952723-44543","to":"/platform/audit-logs"},"durationMs":545,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/audit-logs","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":4.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6d0037fe-7611-4e78-b624-a485406322a9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:15","userId":null}
{"durationMs":17.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/support/tickets?status=undefined&priority=undefined","requestId":"260307ee-e8bd-4ad0-8c65-3357ff3ea795","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:20","userId":null}
{"data":{"href":"/platform/support","navId":"1787486957420-190553","text":"Support Tickets"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/audit-logs","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/audit-logs","href":"/platform/support","navId":"1787486957420-190553","text":"Support Tickets","to":"/platform/support"},"durationMs":415,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/audit-logs","navId":"1787486957420-190553","to":"/platform/support"},"durationMs":438,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"303cca64-9f1b-4629-8154-6ff0b002bca5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:20","userId":null}
{"data":{"href":"/platform/announcements","navId":"1787486959675-301246","text":"Announcements"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"65d79700-f7d2-48c6-b3ac-7d63750343cc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:23","userId":null}
{"durationMs":25.94,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/communications","requestId":"434824ee-08ee-4985-8292-a65137749dde","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:25","userId":null}
{"durationMs":44.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=300","requestId":"351135b5-afd9-49e5-90e6-d0235082282b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:25","userId":null}
{"data":{"href":"/platform/communications","navId":"1787486961267-545462","text":"Communications"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/support","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/support","href":"/platform/communications","navId":"1787486961267-545462","text":"Communications","to":"/platform/communications"},"durationMs":1589,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/communications","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/support","navId":"1787486961267-545462","to":"/platform/communications"},"durationMs":1589,"event":"NAV_STALL","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/communications","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/support","navId":"1787486961267-545462","to":"/platform/communications"},"durationMs":1610,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/communications","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"255abd43-a383-4aa2-9d12-acdfad4cb435","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:29","userId":null}
{"data":{"from":"/platform/communications","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"from":"/platform/communications","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":2.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9f501b5c-c7d9-4cfa-9f67-7c81fa64a98a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:50","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":6,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 15:09:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":1.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"27c6c50d-af1b-4795-b377-3826491d63ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:58","userId":null}
{"durationMs":628.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"64f3a6fe-ef50-4005-abac-71d820e488b5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:09:58","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:10:00","totalConnections":1}
{"durationMs":190.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"cbfe8a15-559e-4f5c-80e6-78ef9eb4699a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:10:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":200.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"fcd25f28-3835-4505-b98e-de8d3b971c5c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":305.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"b40c708c-62b4-46f1-aee6-6ac19a6d300f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:10:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":285.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"231be8e9-9f47-43c1-b3bd-451ef347a335","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:10:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":270.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ab5ca381-3b3a-4a3c-819a-689ca7ad7d83","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:10:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":0.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"00b6fa24-b89a-4f00-b312-35ad85236a05","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:01","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":2306.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.74,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e5326cf8-32e5-47c9-8d8f-8f2c9b5cd1d2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"530145b8-28c8-4715-8660-b00539145d83","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":58.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"573f4aca-cac7-4d56-a1e9-c2b4c2f05ec4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":30.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"2da01654-3d54-449b-8fc9-2ffd331f227b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.78,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"a62b2d14-e523-4247-b079-0b015a1f15e8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"31ec0bd5-5d26-455c-b0d1-2a2df2608c0b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":102.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"11be97f5-99cf-4a9a-b4ac-43107c0fc0e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1657.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":2114.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2052.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2054.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2056.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1427.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1772.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8b033986-d091-4176-9263-caa2ec88852c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":2490.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":2552.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":1684.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1686.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.91,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"de13ad4a-7ee6-4abf-943f-4d5538758c8d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":62.74,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"d467568b-591d-4bfc-9a4b-60622a979d79","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":1097.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.58,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9fe56dba-62f8-4c1c-b975-08be93e9c39b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:08","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay Fees","name":null,"type":null},"durationMs":16,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.37,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b0e37013-572c-47be-879a-50c6ca63e7f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":null,"navId":null,"text":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.56,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9fee1e67-8ad7-42c7-a1f1-917f76c018c1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":118.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"4c564851-ca8a-4834-973b-e42cd189c908","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":50.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"94df724e-b00c-4468-ba7b-95a25d24fd31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787487017083-338362","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787487020491-831679","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":13457.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":383.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:26","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.32,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f959f6ff-5a72-4d2e-950b-50c806ba99cc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":101,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3eadcbe6-b9a3-43c1-84bb-40c8b66598a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Invoice","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bfb13d87-2d64-44ba-8c72-e959c8e713f9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:38","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,468.00","name":null,"type":null},"durationMs":30,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:10:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3b1bc20c-dc91-403a-bc07-883623fbeabc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:10:40","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:11:00"}
{"amount":1,"feeItemIds":["5a1409a6-e22c-47c8-9812-dff49d0307a1"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21468,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-23 15:11:01"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-23 15:11:01"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":30.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e8323676-ccf9-40cc-92fb-f2afcd975ae1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_23082026151100984706756238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"70be791b-c266-4d03-bbca-1f43091cd775","service":"cbc-sms","timestamp":"2026-08-23 15:11:03"}
{"durationMs":1912.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"2058192e-a6e5-41e8-93b7-e7ba6570a8fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"a6f4ad75-94d6-42be-a29f-05bb16ed94fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"f5c2b781-9952-480c-bf67-0e55848b4311","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":2248.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4134c216-7262-4c6f-9906-a3731c71cf0c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":381.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":386.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"44a42d97-825d-4b42-9d46-1b580fe7e1bd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":62.11,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"46bb5f73-c7a2-420e-81bc-f0ce965c1001","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":395.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"84fe62ae-19b3-4b72-a461-e845ef9db33f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":33.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"7acdf99f-8c65-4116-9550-2e9ec9f89dd0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":367.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.59,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d99600e0-c9db-4a84-b5f7-36439e9b761c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"a2b6992a-fd29-4b37-b591-f756ff6fce61","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":420.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c07b18fd-af5a-4025-9ed4-d85ed6d82b99","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.49,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"be6fe435-31f8-4415-9c2b-953a96b07da9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":427.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"282353d7-d4a1-4e1c-9f1d-f70cb6ef3e30","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"3fbc55da-9429-4430-b163-6d2ea22afee6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":421.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"de951c7c-68ed-41e4-b766-e50b3419ecb3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"4dca43ca-7c52-4bc3-bb54-d8238dea4ff3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":386.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae5e04e6-4345-4f1c-a625-52897e07e1c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":53.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"57470112-eb06-4b63-a125-975be85ceeb5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":504.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e0afb827-5b4b-4e82-b692-dcac789b2fac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.47,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"7a67b2cf-9381-4e45-8dcd-bece62752f8b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":385.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e38b6bc4-b2de-45d5-9358-73dff8680348","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"42dfc12e-48b5-4e3f-bda0-c75843327099","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":408.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cdb15b41-2d71-4f37-a980-3a3fff5ecf3f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"540e71d0-a05a-4603-ae00-f50a9c5b929b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":372.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"672610e2-7810-4f31-a050-0a97088dc522","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"6b74e296-811d-4003-b5e7-a461abd011e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":369.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae3f7e4a-e211-4103-8f11-2a78d8a4486f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":41.76,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"eb9fc396-f38b-4bc5-9647-f2cfefab78ac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":380.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"58bab134-a5f8-4147-9012-79a44b98167c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"a62fec15-c626-4d2b-9086-0ced73c1e736","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":398.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6b081a4d-733c-4064-8883-96e6afad6ab6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":35.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"c72320b2-4a19-4c0b-82df-8e22c09240c0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:11:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":29.37,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"fb8cd0f9-9d0b-48bd-95b6-cf57cf9d7872","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:32","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":431.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.93,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b61c6ead-8b02-4ea6-8181-bb41dffc517a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238","requestId":"58770980-7229-4d11-aebf-4686974a120b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026151100984706756238"},"durationMs":390.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:11:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9fc81055-f12b-42f6-a534-f1dfe61b9eb3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:11:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:12:00"}
{"durationMs":59.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e835b81c-6cd6-490b-b99b-af984c2c2131","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:12:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":55.27,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d15007a5-a2fb-4dcb-8a56-43c6f4221cc6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 15:12:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":416.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:12:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":417.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 15:12:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7c623ec3-0544-412a-ad5b-435683e58b7e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:12:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:15:00","totalConnections":1}
{"durationMs":0.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e908fb12-14bf-44a5-bce8-8529ee6f0f66","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:20:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5706187d-b6e9-479b-a884-737264e09120","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:25:00","totalConnections":1}
{"durationMs":1.58,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d21203df-08d2-49d1-814e-f480c64fb7f1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:30:00","totalConnections":1}
{"durationMs":1.23,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0f404966-8a58-4116-baeb-b566d0d466dc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:35:00","totalConnections":1}
{"durationMs":1.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a53334ec-009a-4964-a9d2-ea2f387473d0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:40:00","totalConnections":1}
{"durationMs":1.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bbd7e019-f51b-45b8-9f03-9d2d777295b9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:45:00","totalConnections":1}
{"durationMs":1.5,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e42f93a1-90b3-49c0-bff5-332c1ec8a606","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:50:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d3e51e02-733a-4d5a-a61a-caec53432a10","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 15:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 15:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 15:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 15:55:00","totalConnections":1}
{"durationMs":1.31,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2efc0912-59de-4f12-8afe-43b783a5a32e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 15:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 15:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:00:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"19db27c8-83b0-44b3-a0ca-4c8df5e647e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:01:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:05:00","totalConnections":1}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f3f591a0-40f8-4a58-a75a-565918589264","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:10:00","totalConnections":1}
{"durationMs":0.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d58723ee-2d6e-4981-bff6-9fb436626ddc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:15:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"efe34c8a-0ff3-428a-9113-6d7d33856c44","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:19:01"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:20:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"81233060-7c82-42db-8cbb-c89f9ea88bef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:25:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d0320688-7680-4ec4-8002-37b3672d2c57","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:30:00","totalConnections":1}
{"durationMs":1.64,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b77ba280-fec8-4d4b-85c5-b5c596344105","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:35:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"31daa3cd-ca86-4f0c-962f-5adf445f1ee9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:40:00","totalConnections":1}
{"durationMs":1.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e34c6b28-298b-4a73-bced-7cfa7fda54f9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:45:00","totalConnections":1}
{"durationMs":0.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e56042eb-eeb0-438e-9593-fedb9c0c0fa6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:50:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"69cc206b-4702-40b8-aa01-d22a9bfeacc2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 16:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 16:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 16:55:01"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 16:55:01","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"47564dad-b86f-419e-acf1-3c778569f813","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 16:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 16:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:00:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4bfdd737-d8f8-4095-9e4d-a1577f7ab715","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:05:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8d596f26-ee89-4faa-8d00-23d64de89f10","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:10:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5d9f54c9-56f1-4477-bd10-287812207bcd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:12:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:15:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cd1fb6df-aa2d-41b2-81ec-91a90b315eb4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:20:00","totalConnections":1}
{"durationMs":0.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"75e2070a-6794-40c7-a622-973648e61ba3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:20:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:25:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aac09cc6-61df-488d-8b0e-b82b54266203","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:30:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9cdb9cf0-c530-4c9a-9ef3-e53749739d37","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:35:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"025df264-0bd8-4d92-bd43-6342a3e8a8f8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:40:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a4ec4e4-c26b-4e83-b327-e6a30bdcf102","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:45:00","totalConnections":1}
{"durationMs":0.96,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"14f7a76c-18e1-4742-a0f9-a8aaa506ec3d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:50:00","totalConnections":1}
{"durationMs":1.11,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d7c79efc-fc23-43bf-bcea-78da18c79a04","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 17:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 17:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 17:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 17:55:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c306c0fb-069c-4195-8e5f-72278f81e44f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 17:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 17:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:00:00","totalConnections":1}
{"durationMs":3.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8f7c03f5-6e66-4301-8ffa-dc871f946f2a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:05:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7bac13eb-114a-464e-96e1-ace8b8d6a074","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:10:00","totalConnections":1}
{"durationMs":1.35,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a0d43502-1059-467c-bd16-756b449aca45","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:15:00","totalConnections":1}
{"durationMs":1.1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9127926f-b018-49b5-b369-463d3b6bd32f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:20:00","totalConnections":1}
{"durationMs":0.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d35af56a-c196-4874-babd-b76eec891a49","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:25:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"00ce4b7c-1034-4012-aa90-2a5b8c4b8cbc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:30:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"85213d3b-a870-4f88-95aa-eeeb7686aa23","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:35:00","totalConnections":1}
{"durationMs":1.18,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5771d416-8ed2-4282-8b54-9a43abd99183","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:40:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9a076a78-2fd9-42c3-8f6e-8a637ab8c95f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:45:00","totalConnections":1}
{"durationMs":0.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"25352a97-557e-4de8-94eb-0f430a595e3f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:47:00"}
{"durationMs":0.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7016c236-4717-4c2b-b57b-aa8055860126","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:47:14","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:48:00"}
{"durationMs":1.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"33aeed6b-b395-4025-a0ef-cc26b59c4dc9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:27","userId":null}
{"durationMs":3.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"a2ebb291-e36a-46d1-b892-ae7c7e3aba90","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:27","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"eedc7fac-aa9c-43da-add2-3b903ea8812c","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:27","userId":null}
{"durationMs":2.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"53d0d61b-cf93-4bc1-805a-83bcf0cf9e5d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:27","userId":null}
{"durationMs":0.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"9c356385-2d4c-49f1-b3d6-dc2193b557f7","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:27","userId":null}
{"durationMs":138.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"35b998ca-4899-40ff-afe2-2701533903cf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"d888149f-3b14-4e47-9d41-b4c392987196","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"6771218a-5b96-448c-8003-4342bf7fc9c1","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"af5de5ee-ad67-4aa5-92cc-3b249300473e","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"828bfbbd-a67a-489d-9081-2fae35c60db6","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"e88e8d0e-5c0b-41ce-84e7-76977bba6944","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"8e5b09e8-e5da-4d27-b837-b3dbc85c95d5","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:29","userId":null}
{"durationMs":1.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"91afcace-e741-42bc-99a6-b30ef4369287","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:30","userId":null}
{"durationMs":1.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"7941232a-f0a1-4904-90eb-98e9c3105308","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 18:48:30","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":1805.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aa2cc033-86e1-4889-9afe-350ed9f5e19d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:30","userId":null}
{"durationMs":228.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"d07cd8d5-35e8-434c-8010-d397232fd51d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:30","userId":null}
{"durationMs":231.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"80ac5073-07cf-4105-9a0d-69afaf462e14","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":2879.7,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/enabled-modules"},"durationMs":2881.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":2881.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/grade-distribution"},"durationMs":859.2,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/attendance-trend"},"durationMs":1209.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/revenue-trend"},"durationMs":1211.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/mpesa-config"},"durationMs":1218.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/stats"},"durationMs":1219.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/recent-activities"},"durationMs":1219.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/whatsapp/status"},"durationMs":1219.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/sms/settings"},"durationMs":1220.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":732,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 18:48:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":162.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46b75bfd-4fb8-4441-8b75-e7f057b18480","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":378.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"a3059b46-a86b-4ff1-8f28-cc426fb3151e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":379.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"38fdb1e7-a2cd-455e-81a0-049dc9f06ea2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":509.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0c5a0874-0a7e-412c-9d3a-730a5bb7a155","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":421.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8d96ea3d-d2ff-40ac-a63f-c2873a560533","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":338.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"57fc9b85-97b8-4705-af0e-9578902e36f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":324.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"58c93040-56fd-4b9d-b3c0-ac4ffd0dbd8a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":570.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"8135a4d1-26d2-4cc5-86fb-e4735cf04a2f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":580.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"05625101-f3f1-440a-b63e-958211dfd528","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":382.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"55b8a079-8bc4-485e-9827-4e7676926f22","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":580.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"241e6c25-2a08-485d-a437-7cab9c55f73e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":600.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"733bfc4f-6c31-429c-90ae-792b5ad0d19c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1311.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1317.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1317.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1319.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1319.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1477.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1478.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1479.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1480.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1480.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1481.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6745736a-a938-4692-b776-40b56355540c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:33","userId":null}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:48:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5b926f1c-5de1-401f-8092-a0df4e5f98b3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:48:35","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:49:00"}
{"durationMs":0.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ecce155f-99b7-47e9-9a5c-45e78993b62a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:49:02","userId":null}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:49:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:49:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4252b628-e28a-4252-8559-427cb1b5e971","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:49:05","userId":null}
{"data":{"href":"/landing/index.html","navId":"1787500142908-729329","text":"Landing Page"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:49:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"href":"/landing/index.html","navId":"1787500148006-91367","text":"Landing Page"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 18:49:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae16c0da-9880-4cd2-91d5-f95f0c6f2be7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:49:12","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:50:00","totalConnections":1}
{"durationMs":0.95,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f68c7ced-fe83-4359-a89e-09c7e92d85ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:53:00"}
{"durationMs":1.61,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d318381d-84a5-4472-9754-1ae8f8be6c2d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:53:42","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 18:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 18:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 18:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 18:55:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff3a4b80-255d-4609-8042-7c4c1e4256a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 18:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 18:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:00:00","totalConnections":1}
{"durationMs":1.78,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cc34c7dc-5e5d-4968-b269-aab0450aa09e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:01:00"}
{"durationMs":1.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f7589796-0b5f-4f1f-9041-8bdc4f9c44b7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:01:47","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:03:00"}
{"durationMs":2.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"aa0c4c85-4439-484c-ad9b-fd1b6e30354d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":1.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"49fb2779-f843-49f0-8daa-6aafe6d4eff1","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":1.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"65c5dbe2-2132-4982-a75d-3b7aeff92e83","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":1.13,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"e3290f63-9349-41ac-b761-aa52168b0cf8","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":2.75,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"a37b55ff-d2ba-4f51-ba18-7bb3f9474f43","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":1.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"046e2c4b-6eb8-4df3-9af9-5ec1a4cd5593","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":0.92,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"411c01cf-81e0-443f-8456-2f52465b2613","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":0.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"e018b2ce-3179-4ddf-8213-268158531d56","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 19:03:19","userId":null}
{"durationMs":27.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"70c6ae2d-056f-4213-af58-cd1721f4b98b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:03:21","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":1693.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/guardian/payment-methods"},"durationMs":1707.2,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":1709.7,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":1710.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/guardian/dashboard"},"durationMs":1711.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1713.1,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/school/enabled-modules"},"durationMs":1717.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"data":{"method":"GET","status":401,"url":"/guardian/school-info"},"durationMs":1717,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:03:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":null}
{"durationMs":4.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e29f6bfe-9f91-4a54-b645-9513ff29599d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:03:21","userId":null}
{"durationMs":252.06,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"81eb4920-e69c-477b-a99c-b2cc5e77a247","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":340.6,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"226a70d8-59e8-493c-880e-4f6beb5d9f75","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":352.02,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"50d75c37-bcf4-47dc-afd6-a8b6f0233885","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":371.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"9e1a9774-b187-4c28-9acb-1d3bcf0383e5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":372.15,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"4fa839ac-2f60-42e0-a97c-779919977db6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":400.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"5d463267-5230-496f-9a39-51d759b37145","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":461.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"fe6d4094-69af-45d3-bb18-c23fb3779334","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":472.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"20281573-4476-40e8-86a0-63f638e414f9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":701.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":703.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":725.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":725.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":735.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":753.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":793.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":839.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:03:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.05,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86eb7421-1590-47d1-a1e9-859045ad8a38","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:04:00"}
{"durationMs":49.7,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e2885769-40bf-4489-8637-e30a8e1c4ae1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:04:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"75dd4249-872f-4deb-ae83-5e8806154c18","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:04:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":403.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:04:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":402.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:04:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.29,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"20e3c1c4-0824-4d5c-bf9a-0f721d5397b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:04:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:05:00","totalConnections":1}
{"durationMs":0.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"25fda65e-0308-4a26-b976-f6408f9a5e09","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:10:00","totalConnections":1}
{"durationMs":1.24,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0ec17140-2c26-4f72-9b95-64b4a71efdf7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:15:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3481af9-404c-4dd1-bc7c-f7dbea0748bb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:15:01","userId":null}
{"durationMs":1.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4e70c7d2-c0af-4af2-bb12-5ea044c8fb7b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:15:53","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:16:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"16da0fdb-981f-4545-9261-0e23085abbb2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:11","userId":null}
{"durationMs":544.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"5d4439a6-1bc5-4c22-9b88-b44191ee5810","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:12","userId":null}
{"durationMs":59.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"836e82a5-0e35-434f-8910-3fca7db7740f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:14","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"29e44ed0-e09e-4014-9f3c-d10ceed28b48","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:14","userId":null}
{"durationMs":6.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"3b125e82-edcb-4227-b3fd-5ab362743d78","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"durationMs":10.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"15cf013f-9cf5-4da9-a5bf-267d7ddcf1d6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"data":{"href":"/platform/plans","navId":"1787501773373-965713","text":"Plans & Billing"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/plans","navId":"1787501773373-965713","text":"Plans & Billing","to":"/platform/plans"},"durationMs":792,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787501773373-965713","to":"/platform/plans"},"durationMs":792,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"839e9a56-80b7-4b12-85dc-4142122e34cb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"durationMs":37.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"bb54c418-1beb-40fa-9b86-851a7b7bd5fe","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"durationMs":30.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"f5692537-1e6a-449e-9a2d-f70c3215764a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"durationMs":36.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"7047d10f-0568-407c-9921-6276ad9731d4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"durationMs":29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"fd01fe3d-711c-4d98-b2dc-1cbeec8e1fe2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:17","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787501773373-965713","to":"/platform/plans"},"durationMs":817,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f6a0230f-e369-480e-9524-7001662a83a1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:18","userId":null}
{"durationMs":8.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"c17c0527-6ad5-40f7-ab6c-24cf3726d511","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 19:16:38","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":16,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:16:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"986151d9-4b1d-4352-b691-1c3ea2c890c5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:39","userId":null}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d61dc8f6-70cb-4414-8a26-72d768fa3650","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:16:55","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:20:00","totalConnections":1}
{"durationMs":1.4,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b3204571-2989-4235-82a8-2882d4a64e7a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:24:00"}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"13318d97-487e-4a4f-8168-a306fcf23f55","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:24:46","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:25:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1edf6e2c-c99a-4552-84e2-dea42a420e67","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:26:00"}
{"durationMs":7.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"5f26dedd-5371-422d-af5d-88ad4427af2f","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 19:26:54","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:26:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e11f1bdc-ee58-4f37-beb9-4ff623dea47a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:26:54","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:27:00"}
{"durationMs":1.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"56564cbd-0287-4e95-8dd6-125e09af5028","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:27:00","userId":null}
{"durationMs":30.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"f83c66fe-5303-4d94-872f-cd9a1fb0c24f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:00","userId":null}
{"durationMs":27.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"64ee45af-763b-44cd-b878-0f5719cfcd6c","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:01","userId":null}
{"durationMs":20.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"3e16e0fc-69e3-4da2-a728-1fa5baed47c2","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:01","userId":null}
{"durationMs":29.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"961af2a0-6f6a-49e7-a493-49938eb21122","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:01","userId":null}
{"durationMs":20.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"c00d9f0b-3c95-42b2-ae5f-a15a4c6b2b47","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:01","userId":null}
{"durationMs":39.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"226d6945-f5fb-4961-bfad-b7a8a17b0e7f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:27:01","userId":null}
{"durationMs":8.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"f4ebc5bc-7e7d-4f16-8871-cddb28dddcd8","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 19:27:24","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:27:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e8a1548d-64cc-4123-ab03-f4aa23433e1f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:27:24","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:30:00","totalConnections":1}
{"durationMs":1.45,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"57dbc2db-f2d6-42cb-b369-935e899f72f8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:32:00"}
{"durationMs":2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c95c4296-d2a9-454a-a1a7-13c326fb6f1c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:32:39","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:33:00"}
{"durationMs":6.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"487abe30-a503-41d7-ad8f-6bf42e99ba5a","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 19:33:07","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:33:07","userAgent":"Mozilla/5.0 (Linux; Android 15; Pixel 9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":1.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9634ec05-1c37-42ab-a4a5-f0e7e5e4f0dd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:33:07","userId":null}
{"durationMs":9.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"6b195b97-a907-4eda-9560-e11a3d948633","schoolId":null,"service":"cbc-sms","status":400,"timestamp":"2026-08-23 19:33:23","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:33:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8de6ac12-b121-40de-9b27-3c76d36f8515","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:33:23","userId":null}
{"durationMs":1.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"99ea6d5b-fb1d-401d-912e-696011088895","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:33:56","userId":null}
{"durationMs":12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"e86b3373-3ccd-4a09-835a-64cb733b228b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"durationMs":29.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"fbfeb77c-a738-489a-ab31-b3f31f16c930","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"durationMs":10.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"f3c41cdc-7c56-4dfd-9280-7d5b263b1b5b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"durationMs":20.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"e0050703-ff49-47d8-a15c-e6a3d12ddc3b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"durationMs":21.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"016c1458-4b41-4d7a-9ce6-0f495afe09ae","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"durationMs":37.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"0c00fc4a-c0f7-4a13-971c-79cc3e43fd3a","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:33:57","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:34:00"}
{"durationMs":18.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"389e7a7d-6bbf-4cb4-860f-5efea37d57ec","schoolId":null,"service":"cbc-sms","status":201,"timestamp":"2026-08-23 19:34:04","userId":null}
{"durationMs":12.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"9ea3ad87-7c86-4c29-9656-7433f0c6d302","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:04","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:34:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3bb30225-b55e-4964-b465-70a54e114cef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:04","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":69,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:34:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4c862bde-c15d-44e6-bb09-e080827b5068","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:15","userId":null}
{"durationMs":23.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"DELETE","path":"/api/v1/platform/plans/f4da62b4-7b86-4881-94e9-dd96307f959b","requestId":"7379bf91-5f24-4247-a7aa-93f7af8b9e74","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:16","userId":null}
{"durationMs":4.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"dce46efe-ae14-463a-aca5-c430a62f8bc1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:16","userId":null}
{"data":{"id":null,"label":"Delete Plan","name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:34:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ec9ce689-80e9-4165-a10a-b7e69d90240f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:16","userId":null}
{"data":{"id":null,"label":"Edit","name":null,"type":null},"durationMs":44,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:34:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a2ce2a8b-cc72-4855-b829-b07435da2bf3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:34:19","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:35:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f6cfadf-e10b-4ecc-8325-f781a939eb18","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:38:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:38:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71172355-554c-43ab-8f2e-f317a6a8f0fd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:38:11","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:39:00"}
{"durationMs":13.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/plans","requestId":"fb127bf0-685b-450f-a288-d18bc0e0e60f","schoolId":null,"service":"cbc-sms","status":201,"timestamp":"2026-08-23 19:39:48","userId":null}
{"data":{"id":null,"label":"Create Plan","name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:39:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"48ad7e18-cc73-4608-a25d-831104781b68","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:39:48","userId":null}
{"durationMs":10.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"d249aa6c-b4fa-48c3-bd59-080fb1c7aac7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:39:49","userId":null}
{"durationMs":53.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"ac73aa5e-1cfc-4281-be13-60c0e143fdc9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:39:58","userId":null}
{"data":{"href":"/platform/schools","navId":"1787503194197-80733","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:39:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","href":"/platform/schools","navId":"1787503194197-80733","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":461,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:39:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":"1787503194197-80733","to":"/platform/schools"},"durationMs":477,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:39:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"123cab86-7387-4160-8781-721bcb5bee28","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:39:58","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:40:00","totalConnections":1}
{"durationMs":1.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc43fc63-ddcc-495e-951b-fa6747d7f9c2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:02","userId":null}
{"durationMs":33.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/usage","requestId":"dd708474-d047-4eb8-99f2-d3c98463f52a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:09","userId":null}
{"durationMs":73.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/features","requestId":"db78960c-05e8-488e-a98e-f767c674fa4c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:09","userId":null}
{"durationMs":103.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/details","requestId":"cf9e8d9a-7533-4e4b-8501-9b2d4fbdb907","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:09","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:40:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:40:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c0f1ebd3-f601-4395-a9e9-42f85fa08d04","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:11","userId":null}
{"data":{"id":null,"label":"Extend Trial Days","name":null,"type":null},"durationMs":77,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:40:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8105e18a-8de9-4ba4-8bce-7a99d500285a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:27","userId":null}
{"durationMs":216.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/extend-trial","requestId":"70f6a7ca-82f9-4370-8ec9-cf2641ba200c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:31","userId":null}
{"durationMs":47.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/details","requestId":"d85e5452-fa45-4cf9-a421-b6452966fc80","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:31","userId":null}
{"data":{"id":null,"label":"Apply Extension Now","name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:40:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"da2135f1-bc2e-4f30-9123-7336c08e1350","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:32","userId":null}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":76,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:40:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dd45a6ff-083c-496a-b5bc-1e339f2aad26","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:38","userId":null}
{"durationMs":15.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"PATCH","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","requestId":"583698b0-94a6-440a-907b-69c9b2b5b0f3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:38","userId":null}
{"durationMs":34.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/78a14f6a-4c90-4dba-8b7a-8f1419cfa698/details","requestId":"0f9e4013-25d4-4e6f-84d0-66eee1ec023d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:40:39","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:41:00"}
{"durationMs":36.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"776352c8-1fcc-4605-b486-e37a0d0f8167","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","href":null,"navId":null,"text":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/78a14f6a-4c90-4dba-8b7a-8f1419cfa698","navId":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae8b9fd7-d3f3-4856-af5f-19882dba371a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:23","userId":null}
{"durationMs":16.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/usage","requestId":"d0c7b18a-f381-4a4a-b10c-6978c295a50c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:28","userId":null}
{"durationMs":65.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/details","requestId":"698c4410-712e-46ca-b392-9e2f75032dfc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:28","userId":null}
{"durationMs":24.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/features","requestId":"3a553ba3-5a0c-429a-ab64-3fd70acdcca9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:28","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b0de1cb9-67fc-4631-92b9-eeb2eb800ef9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:29","userId":null}
{"durationMs":13.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"6ff6051a-7cef-4793-bee6-838b3eb2e864","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:29","userId":null}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":73,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d6a3f5a6-6837-44a0-b1ee-0f92c98bd196","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:31","userId":null}
{"durationMs":18.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"PATCH","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789","requestId":"06b8f7fb-f11b-4f41-8662-deea1956258e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:32","userId":null}
{"durationMs":37.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/187335b9-637a-44a8-bcad-4ba1f06c3789/details","requestId":"ddc10ede-bf2b-4d2c-bf5d-f6956cfe7e62","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:32","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","href":null,"navId":null,"text":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/187335b9-637a-44a8-bcad-4ba1f06c3789","navId":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbf532ea-302b-408f-be25-cd719a4e5918","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:35","userId":null}
{"durationMs":24.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/usage","requestId":"33c73bb2-5f99-45a6-928f-050daeba6869","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:43","userId":null}
{"durationMs":41.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"a61ab5ad-3c6d-4cd1-b7b2-8f0a9f55a4ca","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:43","userId":null}
{"durationMs":92.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/details","requestId":"ef08686a-aa93-4a65-8aa3-2147960d25d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:43","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"01569a0b-59a6-4340-9a54-47b10f9f821e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:44","userId":null}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":69,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c1cef671-1560-42a7-824e-8ceaaacd594f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:46","userId":null}
{"durationMs":13.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"PATCH","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa","requestId":"bb878736-9c8e-47e4-8596-ad52f2db1b4c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:46","userId":null}
{"durationMs":36.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/details","requestId":"143a850e-363f-4f39-b914-984a98f16eb1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:47","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","href":null,"navId":null,"text":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","navId":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c09df2e0-1f58-4185-9a43-a7f42e38c976","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:50","userId":null}
{"durationMs":34.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/9ab76bf8-b86a-4183-b39a-d1270d2ef574/features","requestId":"a2abc905-f5ef-4ef9-b9c7-25479d7a9bb7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:52","userId":null}
{"durationMs":23.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/9ab76bf8-b86a-4183-b39a-d1270d2ef574/usage","requestId":"03c7e7ed-b77c-490f-8271-1c2a53f35914","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:52","userId":null}
{"durationMs":38.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/9ab76bf8-b86a-4183-b39a-d1270d2ef574/details","requestId":"0fa44ca1-70ac-47d8-9e16-2e50cb611968","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:52","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"23321188-33a4-4600-aa1a-4fbf82ef2172","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:53","userId":null}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":74,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:41:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f8812867-c238-48a1-b54a-c89952701989","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:55","userId":null}
{"durationMs":13.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"PATCH","path":"/api/v1/platform/tenants/9ab76bf8-b86a-4183-b39a-d1270d2ef574","requestId":"d956b212-0cb0-4760-bec5-80f9328dc8b6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:56","userId":null}
{"durationMs":35.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/9ab76bf8-b86a-4183-b39a-d1270d2ef574/details","requestId":"6cc0f925-44c9-47cb-9fab-f76cf49414ae","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:41:56","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:42:00"}
{"durationMs":25.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"d9926d9b-565f-4d5b-833c-830d34453ed1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:02","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","href":null,"navId":null,"text":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/9ab76bf8-b86a-4183-b39a-d1270d2ef574","navId":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c07baff-7ef8-44d9-b6d4-46a6471ed5f4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:03","userId":null}
{"durationMs":38.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"c6aa9a90-8f0b-46b9-8d56-84e0c5c32140","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:16","userId":null}
{"durationMs":52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"248ee5b4-edca-418b-b767-becf5a0b7cd7","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:16","userId":null}
{"durationMs":47.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"7a7e7c58-eab0-4694-8e54-ba37be75fe0b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:16","userId":null}
{"durationMs":74.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"03c8b4b9-e4c9-45fc-ab8d-ccd1d552a91c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:16","userId":null}
{"durationMs":51.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"e5445e43-1c3b-43e7-a86f-8a7f2014efb3","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:16","userId":null}
{"data":{"href":"/platform/plans","navId":"1787503332699-655496","text":"Plans & Billing"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/plans","navId":"1787503332699-655496","text":"Plans & Billing","to":"/platform/plans"},"durationMs":54,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787503332699-655496","to":"/platform/plans"},"durationMs":81,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e85fd23d-c736-4075-9924-398ca5b2cd95","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:17","userId":null}
{"durationMs":1.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"09ff4db3-a45e-4c80-97a9-2d05bc4ac185","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":18.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"c5d884c0-3211-4327-ac27-dd2985f6dd0f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":20.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"659037e8-038b-426a-95e4-51f104171a2c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":10.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"21d18f07-721f-44e3-b21e-2da5a0f521bf","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":28.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"3a0e8a18-dea1-456d-9d14-6b3e7286006c","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":37.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"1565e57b-f55c-4443-80ba-cf5b30b5b45e","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:23","userId":null}
{"durationMs":27.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"4505439d-07b3-4cba-a27d-7d5d3ec907e0","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:42:23","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":65,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f650faf5-1d01-446b-9d3c-5ca376597203","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:29","userId":null}
{"durationMs":17.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"DELETE","path":"/api/v1/platform/plans/26d78e37-fc87-4ef7-b57d-05892c3c56db","requestId":"4e3991cc-d475-4735-90ba-a048e330cd6f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:29","userId":null}
{"durationMs":9.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"0026f919-2be5-482c-9c4f-d91a6c8af939","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:30","userId":null}
{"data":{"id":null,"label":"Delete Plan","name":null,"type":null},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae33a226-6d3c-4c83-8624-080413df83c2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:30","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5903e56c-7b61-4a72-af32-dcfde3a04e44","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:36","userId":null}
{"data":{"from":"/platform/plans","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8402369b-f708-4a47-b85c-4eb3ba479cd7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:44","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:42:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbe047a2-48da-4e14-b016-b559c1e4e52b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:54","userId":null}
{"durationMs":657.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"ae6c6a63-f259-495b-bfbc-660f84191755","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:54","userId":null}
{"durationMs":61.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"ee0036b5-283a-4cfb-a939-616a504bedcd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":142.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"da114405-37ac-43c4-ba1c-48f83b6a2734","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":294.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"690b9fb0-d1c7-4948-ba7f-67cfde6d5ad7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":297.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"b3526f4d-24a2-4aff-889a-68795408faf9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":511.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"baca7931-b613-4b96-86a6-7c2a69095e0d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":378.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"3e779257-c250-41a1-b4c7-79ed9ab6d7d3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1033.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":475.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":53.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"09b09b13-2d4f-4160-a0aa-7b5cd19ed744","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":152.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"5cc1080a-4856-43f8-8ef7-37a13fa66752","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":250.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"7ffe212a-0cab-4327-b2c1-3dc69d53e775","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":251.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"2e4de418-442c-4b57-9444-1e1fc836a473","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":263.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"30efda02-c229-4550-ba87-248735c72d30","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":234.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"7de805da-4b40-449c-afdf-39c4f3b8ec49","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":284.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"9b0dc3e8-8eaf-4209-87a5-bbb05c7d22f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":227.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"d8e4c73f-e7ad-46a3-9122-fd0e0c726068","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":274.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"bb74bc17-c606-41a0-aebe-d0550e0bd659","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"12a9c24a-b20a-4468-81bc-5a30dcd0794d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":95.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"0c3f6c29-2061-44a9-9cd1-59fb7fdeceee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":88.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"05ca86c8-6cc7-437b-8209-d67e8e0fdfd7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"f7db5245-d4de-4b83-b08b-1d3b30ddb1b2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":557.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":747.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":848.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":928,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":928.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1225.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":959.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"44d059b9-6697-4a10-889e-9a4ab745e9a5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":984,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":984.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1388,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1388.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1136.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1530.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1203.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1235.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1235.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1236.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:42:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"035cced6-801b-4623-a5bb-e9e30aae444b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:42:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:43:00"}
{"durationMs":1.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bb273ea6-c49c-4ec1-b9a9-2c121e83761b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:02","userId":null}
{"durationMs":75.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"6880976d-7857-4d32-a790-cfc487fbf221","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":104.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"4d9495f7-2cbc-4ddd-ae31-1e868e901257","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":99.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"d8d7be23-f68c-42de-b8c7-011afddf5247","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":137.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"70fba621-2f23-4099-a61c-d0d6d8e61cb3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"dbfbd8cb-5896-4c2a-bf66-3e64c4c23b59","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":66.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"54ceafd6-ace2-414e-8f96-2f4836bf09ca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":71.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"6dcdd266-b556-42c9-b88e-e4596ba5e603","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":90.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"5f7a08d8-6ae3-46cc-9fec-eaffd282dba4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":152.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"28cf0370-86c3-46aa-b6a3-1c683f9f2d57","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":146.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"ff06ea9a-29ea-49fa-ad7d-a3d990c0ba5f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":155.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"9df6ab44-e5b6-475b-95bf-057b2b9b6f6d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":124.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"413351cf-426c-48de-9a31-1fca10ab3008","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":590.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":648.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":649.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":669.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":562.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":642.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":661.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1155.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1222.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1266.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1267.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1267.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:43:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46dd7125-5c17-40c6-8770-4a0bc815be4d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"378e3b94-65ca-4e47-a4b0-23131343b10d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:14","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e41662d8-75cf-4fe2-8568-0f820df9497c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:25","userId":null}
{"durationMs":544.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/auth/login","requestId":"100681a9-2fbe-4583-b705-81f7fbe06476","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:25","userId":null}
{"durationMs":43.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"31e1b757-5965-45e4-8f31-76f58c2426f0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:26","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/platform/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"313c4bf2-fc8c-4a70-9bfe-09b41bf140fa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:27","userId":null}
{"data":{"href":"/platform/modules","navId":"1787503404403-368974","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1e178d4b-3fbd-4a16-b7b4-a67782b02b71","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:29","userId":null}
{"durationMs":22.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"2f65dc81-6104-4570-8250-61dc15bf59fa","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:29","userId":null}
{"durationMs":9.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/plans","requestId":"75dc4990-9150-4d8c-9a7f-abbe02b106e3","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:29","userId":null}
{"durationMs":13.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=100","requestId":"70eb41cf-727a-4cba-aa39-fa26646e3584","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:29","userId":null}
{"data":{"from":"/platform/dashboard","href":"/platform/modules","navId":"1787503404403-368974","text":"Module Access","to":"/platform/modules"},"durationMs":1698,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787503404403-368974","to":"/platform/modules"},"durationMs":1698,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/dashboard","navId":"1787503404403-368974","to":"/platform/modules"},"durationMs":1773,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3a9ef04e-b902-4e33-873a-1986c3111d59","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:30","userId":null}
{"durationMs":24.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"26bcbec8-83a5-4c59-bba0-e565f158ad93","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:33","userId":null}
{"durationMs":26.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/invoices?limit=100","requestId":"1d0aa026-1e71-4168-8d38-88c558fabeb5","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:33","userId":null}
{"durationMs":31.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/payments?limit=100","requestId":"64005c15-ca45-4532-8c9f-63048c8ead62","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:33","userId":null}
{"durationMs":8.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/billing-settings","requestId":"3ff7b5cf-7ae0-44c8-afca-25dc6dd6dc83","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:33","userId":null}
{"durationMs":17.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?limit=200","requestId":"e5d6af2f-3265-4daa-a362-5bde83cba6ec","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:33","userId":null}
{"data":{"href":"/platform/plans","navId":"1787503409383-239114","text":"Plans & Billing"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","href":"/platform/plans","navId":"1787503409383-239114","text":"Plans & Billing","to":"/platform/plans"},"durationMs":91,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":"1787503409383-239114","to":"/platform/plans"},"durationMs":108,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"855f164d-0192-43a1-937e-9a1ce172d3ab","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:33","userId":null}
{"data":{"id":null,"label":"Edit","name":null,"type":null},"durationMs":58,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1f00ee58-58ea-441c-b4dc-b8b09d18609e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:38","userId":null}
{"durationMs":10.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"87c33808-acda-41b7-b9ef-7f7c6ca592eb","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:41","userId":null}
{"data":{"href":"/platform/schools","navId":"1787503417287-96677","text":"Schools (Tenants)"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/plans","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","href":"/platform/schools","navId":"1787503417287-96677","text":"Schools (Tenants)","to":"/platform/schools"},"durationMs":98,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/plans","navId":"1787503417287-96677","to":"/platform/schools"},"durationMs":119,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b45ea701-56c4-408f-8d91-d07bd7b1a231","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:41","userId":null}
{"durationMs":19.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/usage","requestId":"69ff6fc1-bb43-4d53-86d9-f48d1e05639b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:48","userId":null}
{"durationMs":31.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"82ee5249-45b3-43a4-bb95-c4d62ab58593","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:43:48","userId":null}
{"durationMs":35.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/details","requestId":"11223e07-cafe-4c24-b3af-8c7b4a1d7098","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:48","userId":null}
{"data":{"from":"/platform/schools","href":null,"navId":null,"text":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":null,"to":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"38b6f91a-f83e-48ff-9ed3-c192eedf2746","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:49","userId":null}
{"data":{"id":null,"label":"Change Plan","name":null,"type":null},"durationMs":67,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:43:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9c423a51-27ce-4514-a7a0-abaa229590fa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:43:53","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:44:00"}
{"durationMs":57.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants?page=1&limit=20","requestId":"0e84e82f-0d31-45dc-a35b-843effd78645","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:12","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","href":null,"navId":null,"text":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools/32026ecc-b58b-42e7-ad3d-baca80305ffa","navId":null,"to":"/platform/schools"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"39b5ac95-b3b2-49af-a473-8f1560bdf887","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:13","userId":null}
{"data":{"href":"/platform/modules","navId":"1787503450277-14081","text":"Module Access"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/platform/schools","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","href":"/platform/modules","navId":"1787503450277-14081","text":"Module Access","to":"/platform/modules"},"durationMs":39,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/schools","navId":"1787503450277-14081","to":"/platform/modules"},"durationMs":64,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c38e14ec-7836-4b99-9a93-1676df108cb0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:14","userId":null}
{"durationMs":15.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"1429e929-2437-4bf7-91a7-ff739b8acadb","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:17","userId":null}
{"durationMs":37.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"f4aed28d-f3cf-4cd7-b6f7-b6193476aa16","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:23","userId":null}
{"durationMs":37.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"8f18b832-6ce1-4512-a537-fcfab86e83f8","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:24","userId":null}
{"durationMs":51.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"a13af2d6-2ccc-47d4-8d61-579a73d0d0fc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:24","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e49ee4fb-c0ce-4bf8-84b1-5e1e68196b1b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:24","userId":null}
{"durationMs":21.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"ef3c50bf-3775-4958-9c18-93bf616058d5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:26","userId":null}
{"durationMs":27.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"5842dc00-cb3f-453d-8f51-04dd4eea508d","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:26","userId":null}
{"durationMs":33.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"a5ee1a60-986a-41c7-87f9-a2ea44733fb4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:26","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b368fbd9-c4d1-4572-9813-bab2e78f65eb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:27","userId":null}
{"durationMs":23.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"6c6db8db-79f5-45fe-8a50-3eae820f8be9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:33","userId":null}
{"durationMs":25.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"4616927b-b58d-4138-a14f-7365479d0635","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:34","userId":null}
{"durationMs":26.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"1a273f49-fdf8-40af-9dd5-2a1532411de8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:34","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f140c04-a463-48b9-a81d-c6b20e4b650e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:34","userId":null}
{"durationMs":19.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"de878da6-31e8-4cda-997b-b3b70f910468","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:35","userId":null}
{"durationMs":26.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"3ca8a907-af11-44c1-99d6-086de8d40a9f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:35","userId":null}
{"durationMs":32.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"588ba7c4-d066-48b7-9f95-e08fe0ab9c77","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:35","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a8e32d30-1983-4cd7-bc66-0fdc0e8d56fc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:35","userId":null}
{"durationMs":19.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"429af7a5-ef06-4dac-b327-47544f5d905b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:36","userId":null}
{"durationMs":21.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"d72dc481-886a-44b4-8422-393e2ae46927","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:36","userId":null}
{"durationMs":29.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"da4774aa-f64b-405d-8d6f-927ff650e571","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8fc1887b-4f16-400b-9794-5c132a97b743","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:37","userId":null}
{"durationMs":23.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"0fc3a60e-72e8-4b93-a6ea-1302c357af78","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:37","userId":null}
{"durationMs":19.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"964aef9d-da33-4f58-866e-45ee0a61b3bf","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:37","userId":null}
{"durationMs":29.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"ebd60e4d-57bd-4c94-aac7-c292d0aaba0e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:37","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:38","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"393395a2-dd28-49b4-98bb-bb036ac016a7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:38","userId":null}
{"durationMs":15.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"503045d9-b168-446c-9e1d-1a21609f61a4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:38","userId":null}
{"durationMs":23.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"1e77812b-fd92-4fcc-9224-6d3a79132dc1","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:38","userId":null}
{"durationMs":25.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"8e28dd6c-2238-469a-9633-e562d2b3b74c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:38","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":38,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"50338ec7-90eb-419d-af2a-584006b25d9f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:39","userId":null}
{"durationMs":17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"600c057c-53a1-4e19-b173-1c09a98955c6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:39","userId":null}
{"durationMs":18.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"8239d7f2-51ee-4c36-b1a5-f0a85c94ab7f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:39","userId":null}
{"durationMs":26.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"0480aeb6-9443-4f46-9a7a-bb1760238339","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:39","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"304f250a-9061-4ea1-9a30-f95d576aabf4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:40","userId":null}
{"data":{"id":null,"label":"Settings","name":null,"type":null},"durationMs":45,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"09bf1afc-3d0f-41c1-8a99-03d74b341e06","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:44","userId":null}
{"durationMs":18.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"9bc14780-6505-42b6-8fce-494542067e54","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:46","userId":null}
{"durationMs":28.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"1f08ae92-3beb-4a1f-85d7-e717f0a9d9cb","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:46","userId":null}
{"durationMs":30.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"47960475-135a-4fb1-a8c1-4590facb664a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:46","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"79fd4e8e-78c7-4043-aead-37fc56f83305","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:47","userId":null}
{"durationMs":21.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"b3ec5175-ec64-4094-97fb-e13b4182f919","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:47","userId":null}
{"durationMs":24.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"66a7c182-5dbd-4ce7-80d0-16a578311bb9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:47","userId":null}
{"durationMs":29.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"b858713c-25be-4abd-9a3b-d0cec079fde4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:47","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"38245a07-fa6a-4c47-a617-66a0d510eeeb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:48","userId":null}
{"durationMs":23.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"24d0487d-28c6-46d2-a376-7a86d45f65da","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:49","userId":null}
{"durationMs":29.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"46b7a9cc-cf29-48d5-9ce0-1b0f6f5147d2","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:49","userId":null}
{"durationMs":29.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"6b10a810-ab95-4974-99bc-d22fcdba3c6d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:49","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"410d5e99-f689-43f6-8a1a-c14a5f2eabe5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:49","userId":null}
{"durationMs":21.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"e7444065-482d-4dea-b97c-287f3d2f31d3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:53","userId":null}
{"durationMs":22.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"584d82cf-36b7-4329-ac77-d7980859b6f4","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:53","userId":null}
{"durationMs":28.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"f5fb2252-647a-4145-891a-cec7d6c5b8ea","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:53","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"27833f63-5c08-44de-981f-a4d83e4e427c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:54","userId":null}
{"durationMs":28.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"9a7abb57-383e-46e5-8b75-3c397ddfe8ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:57","userId":null}
{"durationMs":26.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"bc2ece23-341d-4188-b54c-f63ba3987ea9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:57","userId":null}
{"durationMs":28.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"865d7847-5895-4ed7-b4f5-cb23b6badb21","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:57","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"78b9165b-c6fc-4d20-8000-bc3a1afe70b0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:57","userId":null}
{"durationMs":22.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"e6e42bdd-ce92-4562-a4c3-51d34a4c4a1e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:58","userId":null}
{"durationMs":17.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"3d03e0c4-1fd7-4af6-b4ea-d11632c769ad","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:44:58","userId":null}
{"durationMs":24.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"025b4195-a3f1-4047-a6d0-115cd2a1d700","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:58","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:44:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e76e6900-9bbb-4d14-b72a-dba8e8d910b4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:44:58","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:45:00","totalConnections":1}
{"durationMs":1.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab636190-3c76-4487-abc5-f51d5dad3dd3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:02","userId":null}
{"durationMs":14.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"21918f46-ac64-4839-9650-95b7e40a5e86","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:04","userId":null}
{"durationMs":24.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"1fdf47ff-a7df-4ade-9bb6-dc649bdc4482","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:05","userId":null}
{"durationMs":28.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"7f5b7b4f-5abd-4e81-8fb0-4331373e8f59","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:05","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"10587621-dff1-43fc-bbf6-d376f6ef23a5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:05","userId":null}
{"durationMs":24.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"97b3c446-1dfd-49ae-a189-a8ec97ae0915","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:06","userId":null}
{"durationMs":21.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"b65d624e-4c7f-410f-a14b-2494f9ce8411","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:06","userId":null}
{"durationMs":33.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"312e52fd-87e6-4d93-baa1-b80faf2fc6c2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:06","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bdb9aa60-3aa8-40e6-8018-9d2e5b843fdb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:07","userId":null}
{"durationMs":19.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"744bf557-c684-4d56-acad-445b0d7bbebe","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:07","userId":null}
{"durationMs":27.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"50bcf9fa-230f-47ce-980f-debb0edab08b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:07","userId":null}
{"durationMs":37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"a1eadf5d-91af-42b7-8460-a7a1b66658a4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:07","userId":null}
{"durationMs":104.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"aaefe150-4c30-4d7e-95ce-cd64e663c7d4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:07","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"af8f543e-0bef-492c-a6c3-4811824d3b6b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:07","userId":null}
{"durationMs":23.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"87ca4f95-28fc-4325-899e-cf4c915d89a6","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:08","userId":null}
{"durationMs":31.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"97577983-eedc-4c75-8259-c813a351c038","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:08","userId":null}
{"durationMs":17.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"94468f88-5be5-4009-907f-44ad27def593","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:08","userId":null}
{"durationMs":23.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"dac9bf9f-1df6-4f0b-ae7b-fd1c2afd64b5","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:08","userId":null}
{"durationMs":34.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"95c2290b-c632-4fd4-ac4c-f95ab29a09c9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:08","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":31,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ae7f555d-2a28-4174-9501-2ccff7e177d0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:09","userId":null}
{"durationMs":16.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"be3f4307-141b-4665-8c20-bec9cd11c0e5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:09","userId":null}
{"durationMs":16.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"c96d8768-c043-4c84-812a-5dbc03965957","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:09","userId":null}
{"durationMs":21.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"b678d59f-15a5-4aa4-83c6-a7ad27538c0f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:09","userId":null}
{"durationMs":18.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"c0f79e34-b997-4006-a41e-38136188cd79","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:09","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bcc109be-1893-4f8a-a79d-9db7889b1dbb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:10","userId":null}
{"durationMs":26.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"f1ef5ef1-692e-431c-9440-8b99219ed775","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:10","userId":null}
{"durationMs":33.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"1eb9e20f-6dc0-4995-a743-e8f3e75fd757","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:10","userId":null}
{"durationMs":16.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"3280641b-37ab-4dbc-b4c4-ad12a606f889","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:10","userId":null}
{"durationMs":25.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"0ef62918-5370-4548-88b0-fd376582b38f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:10","userId":null}
{"durationMs":38.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"71583118-1e41-4545-9928-49d5a5a382f7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:10","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":10,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cdd9dfe3-7866-4954-9d04-1a131cab2f3a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:11","userId":null}
{"durationMs":13.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"63036ff2-6827-46c4-8b3b-8b1fb70e9f23","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:11","userId":null}
{"durationMs":23.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"553a9b43-dee4-4608-b2b3-9555947fe113","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:11","userId":null}
{"durationMs":26.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"1c5c2c43-e973-4557-90ab-1fe523bbdbe0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:11","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9e635d8d-eb82-45db-a20a-ea49ec074ee5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:12","userId":null}
{"durationMs":19.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"922eff68-f212-4159-8c38-cce2bb2717a8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:17","userId":null}
{"durationMs":22.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"3a847df3-ef52-4950-b0d5-434e92217da9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:18","userId":null}
{"durationMs":28.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"abbd0b74-183c-4a9e-baec-8cdd6ad733e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:18","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"169814b8-eb13-492f-94a4-2e788c444d1b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:18","userId":null}
{"durationMs":20.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"7833826a-71f3-4c9f-92bd-4c01aa1bd447","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:19","userId":null}
{"durationMs":25.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"d19ea6dd-2a65-42be-915d-cb29ebcb9abd","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:19","userId":null}
{"durationMs":33.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"a844b3fd-e170-4e8d-93f0-c4f946e54946","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:19","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d15153da-971a-4008-9c89-ce877e7c5450","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:20","userId":null}
{"durationMs":29.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"fb8f1892-e415-42da-a872-9fef7d97c38d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:20","userId":null}
{"durationMs":17.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"7a097499-e6eb-4841-9693-dc7c67102001","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:20","userId":null}
{"durationMs":23.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"9a0ae8bc-eaa1-4a0d-99a9-9af4e90dd8de","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:20","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":29,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:20","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":0.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5e80f7cd-d3dc-47d8-b345-0eb9dd5bb5b0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:20","userId":null}
{"durationMs":19.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"d835ec57-8c19-43d6-a99f-47d6c35cd13c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:20","userId":null}
{"durationMs":23.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"ca32a0d8-4983-4842-8bb4-b03667d495a8","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:21","userId":null}
{"durationMs":26.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"eb3a8a67-e4a7-47e7-b004-982e6ee46cce","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:21","userId":null}
{"durationMs":16.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"d0cf9d30-5791-4285-be3b-e247f2717741","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:21","userId":null}
{"durationMs":19.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"bb89f1a9-ad22-42fe-8b98-d148f9597588","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:22","userId":null}
{"durationMs":14.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"6f6072ce-1c27-4940-bc6c-cb563eab771d","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:22","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":35,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:22","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d874d251-9f00-4ce6-ae44-3aa07ce0244e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:22","userId":null}
{"durationMs":18.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"bb7758f5-571d-4001-85e7-295f5cd04031","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:23","userId":null}
{"durationMs":21.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"1a06504e-5114-449b-a038-2ecf687a7c8f","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:23","userId":null}
{"durationMs":23.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"2e51c241-7cd1-4e2d-891a-f6a24bcaf54e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:23","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"72a2a958-c9a4-4932-823f-6da748aefdef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:23","userId":null}
{"durationMs":18.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"8e7eaf6e-401a-49cc-b9a9-2a41f1bc431d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:23","userId":null}
{"durationMs":25.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"362130be-1bde-4407-9c39-0efcfaf5f3b9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:24","userId":null}
{"durationMs":26.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"e220baf0-084c-4d9e-be62-680c84f204b4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:24","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":37,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:24","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3478485d-b4bf-4f75-8a98-f397f125178c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:24","userId":null}
{"durationMs":19.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"8a3d0391-1540-4187-87b8-63d6565c1b2e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:27","userId":null}
{"durationMs":26.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"e963ae76-6351-4268-801e-13b148aafe74","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:27","userId":null}
{"durationMs":27.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"f28a605f-f9e7-4ecc-97f6-d37d4a5863b5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:27","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"feb92aed-b5fe-4819-b933-ac869cee2dec","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:27","userId":null}
{"durationMs":18.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"65f7eb4e-2de7-4b8e-a77b-5c4d308138d7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:28","userId":null}
{"durationMs":20.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"867b4116-cbde-4d85-8ed3-44ada5cff8b9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:28","userId":null}
{"durationMs":27.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"ee9f4ee3-25ef-44e3-9d62-2a3763312040","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:28","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c1ed930e-8a43-4bf0-a57a-78469c0f4b5d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:28","userId":null}
{"durationMs":17.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"344f1e91-e635-4620-905e-60e17ce450a6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:29","userId":null}
{"durationMs":16.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"86c4265e-de47-43da-97d4-947be7f396d3","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:29","userId":null}
{"durationMs":26.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"e454d731-5a21-4e09-b907-9fd3991f6ea0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:29","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bfc1775b-4410-42de-85e5-a9d81eb73867","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:29","userId":null}
{"durationMs":19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"7765de57-f1e9-49e4-903c-598d35582e16","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:30","userId":null}
{"durationMs":16.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"990d4a52-225b-4e6b-ba91-ec855e3e4ea2","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:30","userId":null}
{"durationMs":22.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"542df528-8655-4986-884e-dec1c9fcf008","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:30","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"37c3182c-9c1a-4be4-b41d-4d05b7a8f255","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:30","userId":null}
{"durationMs":17.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"1a481b91-5f9a-44fd-9388-d2251653c04c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:36","userId":null}
{"durationMs":21.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"3aef3d68-3f34-4b3e-9907-602587cfffbd","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:36","userId":null}
{"durationMs":21.32,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"1ed293bc-e983-4de6-8453-65c4e43c6fde","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dc473dd8-5147-4474-b767-09f796a253ba","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:37","userId":null}
{"durationMs":16.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"79f67378-6a92-40aa-b2d1-2b35a7988fbd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:42","userId":null}
{"durationMs":27.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"5c2778e2-d752-49f3-b4d1-5bdb195d7090","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:42","userId":null}
{"durationMs":29.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"48cbeb24-d60c-4042-952e-b9f2604bf04e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:42","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"022d788f-2c54-49ca-80c5-7b4f3784c43e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:42","userId":null}
{"durationMs":24.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"2654a77d-6525-4a14-94f1-cfbdb2e0a63c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:43","userId":null}
{"durationMs":23.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"e9de2724-68ca-4df7-9420-3cf5f2403487","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:45:43","userId":null}
{"durationMs":26.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"bccc75d3-3eda-4851-828e-9f5083b7c050","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:43","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:45:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3aba0764-0b38-4b4f-b9e7-7e88fc418c04","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:45:43","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:46:00"}
{"durationMs":23.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"20e497ec-0fe0-486a-b766-958b41abb293","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:06","userId":null}
{"durationMs":29.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"f1bcf0bb-350d-4aae-b323-5810349ad1fc","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:07","userId":null}
{"durationMs":29.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"c4c09708-7fee-4829-900d-6b3395dcc45c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:07","userId":null}
{"durationMs":43.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"5bce987d-62a6-4987-a000-ef227836abb4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:07","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":3,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:07","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d177fa40-1fbe-49ff-ab4d-b00484d949ef","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:07","userId":null}
{"durationMs":24.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"bc94598d-9ce2-4344-99b8-3c924fe229dc","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:07","userId":null}
{"durationMs":36.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"28c0e146-9583-48a0-8bc1-34e73ce5ca7e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:08","userId":null}
{"durationMs":18.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"4d442251-6e8b-4fa3-8b0e-6c9165d2b12a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:08","userId":null}
{"durationMs":23.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"aa681276-bc64-4a38-9ca2-c4343b6dc2d7","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:08","userId":null}
{"durationMs":29.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"f2e5371a-8680-4060-b359-b2330c221309","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:08","userId":null}
{"durationMs":16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"662c94cd-b95a-438c-a532-0c6614453368","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:09","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e02dd5f0-469c-485a-8f1a-cabf3a48c1a0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:09","userId":null}
{"durationMs":29.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"2f7decad-bed3-469e-8c90-44a02e13d96b","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:09","userId":null}
{"durationMs":39.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"80c51d1f-9de2-4ebd-b802-cb8886773193","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:09","userId":null}
{"durationMs":14.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/modules","requestId":"92766861-922c-445a-a697-32cc7bf6dcf2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:14","userId":null}
{"durationMs":23.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/modules","requestId":"411683ff-3409-4b33-bd59-03cc4e6cdcb9","schoolId":null,"service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:14","userId":null}
{"durationMs":29.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/platform/tenants/32026ecc-b58b-42e7-ad3d-baca80305ffa/features","requestId":"3286c156-d4f4-4b64-bbf0-c78400e39a03","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:14","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":14,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/platform/modules","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5df875bd-fdb0-4c3b-b24e-529b89937638","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:14","userId":null}
{"data":{"from":"/platform/modules","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/platform/modules","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":5.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7ff7b72a-5fe2-4948-925f-58ab65fad928","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:33","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:46:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d62717e2-bfaf-43d7-aac4-8870e0bae8cd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:51","userId":null}
{"durationMs":692.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"19dd838e-b44b-4aed-89d3-f4463e161030","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:51","userId":null}
{"durationMs":58.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"29845e05-d3b5-4103-a00c-1fd369b694c7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":626.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"d267d1fe-5519-44a3-ad9f-43a67296b2ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":272.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"cf3745aa-0954-4f55-a38e-ddb685dd9e8d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1451,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":464,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":112.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a4b411d2-3968-4764-b036-9f6ecc84e635","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":271.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"edf1c0cb-07c3-4a99-8e33-8d5910aee3c0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":793.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"575369de-4f3d-49b2-bddd-e0f0552b456f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":213.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"fc716b46-e552-407a-9b64-6d9acd3c1c02","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":990.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"25b388fa-5861-472a-ad65-2e3815f4d02b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":323.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"23af2512-b70e-4d6e-b8a7-c53040df3b85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":739.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5d8e5ee9-f8e8-4996-8210-62552c7a04b0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":249.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"a063fd74-b34e-4aa8-a86c-79cd4b2e257b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":610.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"a73d769d-3937-4482-a4c2-2ba2c91f0a0a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":426.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"fb6aacbc-538f-440b-b307-172ca1aa80a4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":647.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"1a802c22-fb03-44cb-bd9c-b3d41f128d43","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1101.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"b51deb25-9e70-4525-a384-e87e3ea97055","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":504,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"1326875a-30be-4de1-b523-a0ec7978cbfb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1107.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"88b27f6d-2e4c-491a-8a7a-45d8bf229697","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":492.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"12112d40-a5b8-4795-9855-c32b48b11d69","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1042.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"85992090-9bd8-4236-83c5-328e2f7ad250","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1297.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1363,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1250.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1655.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1359.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1765.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1613.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":2019.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1616.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2023.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a693fad9-f4ed-48fe-a87b-8a939f806865","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":2857.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":3263.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":3263.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":3264.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":3264.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":3265,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":3281.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"95b8303d-eec4-46ac-8ef5-8d5e8a8c00de","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/meals","navId":"1787503613629-400405","text":"Meals"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b7cb8b02-d8a5-4e20-a520-7ad54356aa43","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":57.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/meals/plans","requestId":"55c99397-3d9e-42a0-9eec-5cbbd38a5f74","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":86.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/meals/dashboard","requestId":"bec4b9ee-7eca-4e37-9c19-f4828bc84688","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/meals","navId":"1787503613629-400405","text":"Meals","to":"/dashboard/meals"},"durationMs":1309,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787503613629-400405","to":"/dashboard/meals"},"durationMs":1309,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787503613629-400405","to":"/dashboard/meals"},"durationMs":1326,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/meals/plans"},"durationMs":514.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/meals/dashboard"},"durationMs":612.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:46:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0789984e-0e5c-4e98-aef0-966d8fef9e72","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:46:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:47:00"}
{"durationMs":51.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/terms","requestId":"4732781d-83fe-4b0f-93e3-e49d2a1c8d88","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":29.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/streams","requestId":"7a138126-7203-42bf-8dc5-d1acd3f3ce51","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/meals/assignments?page=1&limit=20","requestId":"668aee1f-c35d-448c-b203-593a2c22ca10","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":63.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/meals/assignments?termId=cmp8gtpme00d68bcnq5m8mk8x&page=1&limit=20","requestId":"317ff81d-6245-4499-a1d1-0f644a7adcc7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Meal Assignments","name":null,"type":null},"durationMs":77,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/streams"},"durationMs":537.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/terms"},"durationMs":538.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/meals/assignments"},"durationMs":553.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a5221f75-6ace-4445-aaee-73bd391e84c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/meals/assignments"},"durationMs":467.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"69856995-d069-4b8b-8991-5ab3bf9892a5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Staff Portals","name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard","navId":"1787503630699-764873","text":"Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/meals","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/meals","href":"/dashboard","navId":"1787503630699-764873","text":"Dashboard","to":"/dashboard"},"durationMs":82,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/meals","navId":"1787503630699-764873","to":"/dashboard"},"durationMs":148,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"be9a28ce-eb1e-4845-abf5-8a4a6d338e1e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:47:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/dashboard","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:47:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a3d354b6-24e5-4ac9-8f87-b33537b33f73","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:19","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:47:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b71ced0e-2238-4b97-97cd-06b66e48007b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:31","userId":null}
{"durationMs":632.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"6eccd641-7b2d-4f7d-8f6d-e8ae97808ef3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:32","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 19:47:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"33048ea5-4f0b-4778-8a12-7288f1635cf0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:32","userId":null}
{"durationMs":61.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"766d83ea-d0a1-4b66-be47-5b32948eedaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":62.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"4f17eda6-21f9-4635-a107-d111357318fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":115.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"0e6b930a-d6c9-449e-85f9-86f569bc128a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":122.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"3b217bdb-8b61-4d44-ab5e-ae05076d00ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":106.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"2d712633-2f4b-4e2a-8bf6-c9edba0945cb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1074.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7afe604a-e3d5-4512-9d79-3520e7e096d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.46,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"0bd1a04d-9924-420c-abd2-af174499ca6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":55.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"99142e41-fe26-4239-a812-9d5dbdbdc30a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":40.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"0979929d-5f19-4fc9-b1ac-af864f653332","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":79.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"5bee0997-4e48-4dc6-8e66-8296777f9f58","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":91.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"8164b4ad-7395-4530-9ac4-757c72431143","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":129.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"3ce6d092-1b81-46c8-9a69-4f75c9891b24","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":57.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"53f87150-fd40-49c5-81ad-94ce413bde3b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":884.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":949.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":950.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":950.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":951.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":538.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0bac9c07-3113-4123-844c-893edc704810","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":774.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":775.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":817.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":900.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":901.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":607,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e50dead9-5fc4-4ed5-868f-6479b9f30e7d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":100.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"cbaf5df5-9baf-4ce6-92df-c8d082cd5962","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787503652009-390369","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":"1787503652009-390369","text":"Fee PaymentsDue","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":432,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":"1787503652009-390369","to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":458,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"86ac448b-5728-4c19-93a9-02a0b3e5879b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":52.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"c490f996-b23d-420b-98a7-468ad96b4eee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":570.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":467.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1f7f12be-9677-4166-b0f3-7be628e20edc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,468.00","name":null,"type":null},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"162f252e-825a-4e35-b81c-e591a05e5c6d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:39","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["5a1409a6-e22c-47c8-9812-dff49d0307a1"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21468,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-23 19:47:57"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-23 19:47:57"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":58,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:47:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e29c115f-b1e7-4d1c-a524-a9523e7bcf13","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:47:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:48:00"}
{"checkoutRequestId":"ws_CO_23082026194802733706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"b86c7ee0-0271-432a-b74d-61f731dd6479","service":"cbc-sms","timestamp":"2026-08-23 19:48:05"}
{"durationMs":7587.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"5e79779e-8826-44d9-bbe5-00263c7955d8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":8031.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9344c6f9-32fb-499b-a438-a3c52dd7a649","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":44.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238","requestId":"77631e36-5104-4dfd-bad3-be8d5a174e80","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:07","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238"},"durationMs":421.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"db8c9542-71cb-4799-a109-1d5e95379f0c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":45.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238","requestId":"22fe41a8-5483-4d4f-98f0-14048a40288c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:48:09","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238"},"durationMs":433,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"784b2ddc-63b2-41df-99b6-8824e09fe542","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":38.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238","requestId":"67908378-9bc2-421d-81d4-c72c8a378128","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:48:11","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238"},"durationMs":398.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"219aebf9-5363-48bc-8c3e-4798dc4107d8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238","requestId":"bb63970f-8d74-4673-a83b-2d6379fc2720","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:48:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238"},"durationMs":413.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9b96a60f-c711-4783-9979-d662af82018f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":82.75,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"78626a8e-a5d7-45d8-9996-330af159d1a9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:15","userId":null}
{"durationMs":47.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238","requestId":"6085669c-3439-444f-bcdf-10253d6724d3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026194802733706576238"},"durationMs":472.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4c58c1b2-d760-43f5-b4b7-44af433c22d4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":99.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"20d40cb6-96d1-4df9-87f6-e859e700906a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":469.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"63f33f44-8e10-413c-809c-9ad7958b8683","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":61.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ecf6c6dc-0f2e-494d-8536-258ced7a7b91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:48:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"80aaf1ac-19db-4dfe-b568-2d532c0f64c2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:48:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":431,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":434,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:48:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5c1f3d68-157e-4cbd-8de6-897de2383b45","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:48:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:49:00"}
{"durationMs":62.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c410f15a-d773-44c3-8e08-d4fac6c92a91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:49:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":69.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"34b9b252-ba2b-4767-9b35-88c034d789f4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 19:49:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":451.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:49:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":451.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 19:49:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7cb72ce5-c1b5-4d98-abf3-2dfb154f992a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:49:36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:50:00","totalConnections":1}
{"durationMs":0.93,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2abc1dc0-f018-43f0-bf93-043d10040462","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 19:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 19:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 19:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 19:55:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"72fc419f-12ad-451f-8b5a-efe97843c814","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 19:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 19:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:00:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"83fce8f3-4392-4fdc-964e-a0183442ed83","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:01:00"}
{"data":{"from":"/","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:01:05","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"data":{"from":"/","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:01:05","userAgent":"Mozilla/5.0 (Linux; Android 15; M-KOPA X20 Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/151.0.7922.85 Mobile Safari/537.36","userId":null}
{"durationMs":1.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aef6cad8-18d0-44d1-b416-9c58e6b14462","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:05","userId":null}
{"durationMs":0.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"240eda76-391e-4f44-98ab-99bce7e4d1fb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:21","userId":null}
{"durationMs":3.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"60885be9-b043-4266-97aa-92afc9045bb3","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:22","userId":null}
{"durationMs":2.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"56b2ec5f-92d1-479c-a9d8-fd6413fb0580","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:22","userId":null}
{"durationMs":2.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e8575a28-c55e-41cf-9ac8-763fece6b19b","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:22","userId":null}
{"durationMs":2.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"692ce906-3871-47cb-b209-f2f8f22c7a7a","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:22","userId":null}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:01:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:01:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":3.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e91ec141-ee60-4551-88eb-61a512636e0e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:22","userId":null}
{"durationMs":1.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"88dc3e10-ec18-4ecc-92ad-bde1772b574e","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":1.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"1c7fc919-028f-47de-9a1d-7c40214150a1","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":1.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"633006c3-c966-4288-9942-9fcf32fa13a2","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":0.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"e1a262dc-e32a-41c6-8bd4-d63b2cf4bd20","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":0.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"d4a22ace-7936-4223-be47-763707b2bd98","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":0.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"9ec20139-c0ba-433a-be22-d97dc3801db0","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":0.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"0456b596-683b-4c46-904c-82cea3ae5a35","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":1.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"889672fb-8de9-454d-b139-44e407d1fd17","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:01:23","userId":null}
{"durationMs":252.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"48425c26-4dbc-4108-bad4-2b2e3f5632d1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:23","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":902.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/enabled-modules"},"durationMs":940.2,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":941.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":942.7,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/grade-distribution"},"durationMs":408.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/revenue-trend"},"durationMs":422,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/stats"},"durationMs":424.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/recent-activities"},"durationMs":427.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/dashboard/attendance-trend"},"durationMs":430.8,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/mpesa-config"},"durationMs":433.9,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/sms/settings"},"durationMs":436,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communications/whatsapp/status"},"durationMs":450,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":94.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"716109a1-087a-4f26-a8e2-2f151e8b645a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":918.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"db3852ee-c3ab-4e42-8f61-571db7d0bf31","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":940.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"fb091a6e-9b44-4ed3-965e-516211dfec05","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1067.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"ddd8763b-70da-4e0f-a83f-6326e723e53b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1063.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"9645fcf3-7c6a-4a23-a110-407b2f191eaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":778.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"9ee268f8-9212-486f-80d8-039e8b8a09b0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1094.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"169125c6-e758-450e-a096-be9e9d57c130","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":689.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"705966ef-4b56-4534-a27e-6d98474bce71","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":496.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"ea1e54db-5747-446b-bc3d-3b8767d3a73b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":459.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b8556995-4390-489b-8add-9d5ae8fd72db","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":992.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"52141329-e1f2-41d4-a91e-10e98377022f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1138.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"f3c26779-2227-4a79-b786-1400980c2415","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1153.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"efa23f6c-5bf9-41c6-b86e-eabade2543b4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:24","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1840.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1848.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":1852.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1854.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":1857,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":1863.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1864.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1866.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":1919.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":1921.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1923.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1924.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":174,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ca05cdb5-1e4a-47da-93f4-2249ce47c4d5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:26","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":52,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4d2f083d-0499-46d8-886a-9a62531657d9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":85,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b69efa37-e549-44d2-9d16-4d280a16c31b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787504487955-885346","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bc8ac218-0694-44d1-9a95-c662bf514f91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":102.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"ebf8853c-8ece-4ff5-8101-45559262945e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":94.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"2178b735-fabd-40cf-bf50-b32a8edc357e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":41.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"d031c118-2f92-4811-ba8b-c3af2f022b2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787504487955-885346","text":"Students","to":"/dashboard/students"},"durationMs":5085,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787504487955-885346","to":"/dashboard/students"},"durationMs":5085,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787504487955-885346","to":"/dashboard/students"},"durationMs":5220,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":536.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":635.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b2acc0e3-1311-4e78-824a-f2310f9b6ab9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":848.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:38","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f090582e-b17c-48a6-8926-e6ee60f3c51b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:38","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"01e0e622-7f76-4443-bd32-a62480c411d9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/years","requestId":"877265f8-b174-4cb2-94d0-0bd873479dfb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions/stats","requestId":"b9f85a57-9e6a-4484-bb9c-bdc6a9a9d7f7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions","requestId":"a4275a08-583c-45ea-a386-59220a5b0838","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Promote Students","name":null,"type":null},"durationMs":108,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":740.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/years"},"durationMs":748.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:40","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"219df579-39e5-48ce-bccc-501809c7d093","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions/stats"},"durationMs":1163.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions"},"durationMs":1199.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"ID Cards","name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:42","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fb52d398-5e5a-4de1-a1ab-60292a2be59a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":60.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"a6777b97-f0c4-499e-ac76-25efd09e5c66","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":101.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students","requestId":"e07f766e-69dc-437b-af60-91958482e665","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":530.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":567.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:43","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a0a37fb-f618-4c86-b4ef-74a0bb2dd52a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":46.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"9aeaa836-78bd-4d2a-b69f-1a71b6382fe6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":61.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10&status=TRANSFERRED","requestId":"2d03932a-8bee-43d1-ba88-1e5eed726c6b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Transferred","name":null,"type":null},"durationMs":86,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":633.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":638.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:45","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"98f38bf8-1a69-403b-ad7a-2b156b4a4b8b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":66,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:52","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7e5fff24-627e-4a59-90ee-0f1d285b4243","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":114.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardians?page=1&limit=10&includeStudents=true","requestId":"0658eb51-11cb-456b-998b-df6628701f9d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/guardians","navId":"1787504508782-439740","text":"Guardians"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard/guardians","navId":"1787504508782-439740","text":"Guardians","to":"/dashboard/guardians"},"durationMs":555,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787504508782-439740","to":"/dashboard/guardians"},"durationMs":555,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787504508782-439740","to":"/dashboard/guardians"},"durationMs":616,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:53","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d117bce5-ba3b-45a6-b959-b217ea7187d5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/guardians"},"durationMs":527.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:55","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"68648599-c479-447c-864c-30d3d9a59948","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":90,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:57","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"68764bf7-1927-49fe-8711-0e5f8848cd91","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/timetable","navId":"1787504514850-901649","text":"Timetable"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/guardians","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:01:59","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5409cb30-8d52-4bf6-8547-af12b7dd5bde","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:01:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:02:00"}
{"durationMs":37.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"50a9a48e-b5d2-45d9-b74c-666addc1c430","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":161.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/staff?role=TEACHER&limit=100","requestId":"e667714f-00a5-4bb4-9f40-16020da72a4c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","href":"/dashboard/timetable","navId":"1787504514850-901649","text":"Timetable","to":"/dashboard/timetable"},"durationMs":1604,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/timetable","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","navId":"1787504514850-901649","to":"/dashboard/timetable"},"durationMs":1604,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/timetable","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/guardians","navId":"1787504514850-901649","to":"/dashboard/timetable"},"durationMs":1797,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/timetable","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:02","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":31.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1bf0aa08-3946-45a5-8e28-5852fd01cd6d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":258.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/rooms","requestId":"0237f6ea-97f4-401b-a9af-d01d56b78a20","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":977.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/staff"},"durationMs":1477.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/rooms"},"durationMs":2375.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:03","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"468595a6-55bf-41ed-8a99-497e17e6f096","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/timetable","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:02:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/dashboard/timetable","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:02:06","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4d425a3e-f644-4505-966e-b2fc9d5c8965","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:06","userId":null}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:02:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1d5b9fa6-866e-4260-a086-5da6bb49af70","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:18","userId":null}
{"durationMs":636.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"89edc601-b159-458e-a439-817e3c87dcf3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:18","userId":null}
{"durationMs":48.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"bf3421eb-0eb3-48d6-b55f-1023d53e53d6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1653.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:19","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":23.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"77d0a3f2-d284-473d-b4a0-fa6b60e76002","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":73.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"8c225a80-0db6-40b4-9eac-76f340ffb9dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":83.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"5b48679b-409f-4a56-a79c-2a8a98214cb2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":93.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5bf917f0-9c75-4260-ad78-2aeb575203c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":132.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1d7647bb-0b82-40a1-8ad4-e7c319827043","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":137.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"d39e6cf5-1dd5-4bf8-b5cf-73f27f587167","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":48.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"840a3d12-8e93-4fff-b378-5d7bd6936b20","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":51.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"2d4294d0-7a4b-45f2-8f00-01bb34228091","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":117.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"0ec07314-a7c7-4b2e-9284-efd952e5e2df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":140.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"e3a88122-c8d4-4787-9b49-c27bddb95ef8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":198.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"11a08da9-52c4-4709-84da-d04f227e47fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":532.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1040.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fc65f172-8aeb-43cd-8b22-06a03f0fdc5d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"2a0d9a00-f978-4e3e-bf2a-1e3bd4886085","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":797.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1296.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1298.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1301.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1017.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1041.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1111.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":704,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":708.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:21","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"156787bc-5faa-4772-bd49-65a219a81bc1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":535.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"00eb3e45-621d-43b9-94d9-b4c88caf6490","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a7865552-1fe1-4d1e-8ef0-36e1a0a900e4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":111.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"9e82cac7-4ed1-43fc-892f-e46b1b298be4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay Fees","name":null,"type":null},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","href":null,"navId":null,"text":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian","navId":null,"to":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:31","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":17.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f5a312a-2570-4514-8993-e62ff366f30d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":61.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"5c380558-6394-4e96-9a25-a81b8b78b024","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:02:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":639.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":1048.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:33","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d647e908-322e-4401-be95-fa21e461332f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,467.00","name":null,"type":null},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:02:35","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f8683ea9-7b95-4c84-8262-4c12c95f302d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:02:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:03:00"}
{"amount":1,"feeItemIds":["b13011dd-a462-405a-86e5-d388cd8b466f"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21467,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-23 20:03:09"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-23 20:03:09"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7533fd4a-a5b8-4eda-a27d-2c3f7cdbd21a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"checkoutRequestId":"ws_CO_23082026200309326706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"e3aeb730-2961-427c-a544-71197c4980d4","service":"cbc-sms","timestamp":"2026-08-23 20:03:12"}
{"durationMs":3289.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"24a6992d-b1ba-435f-af75-b383dc871606","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:12","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":3699,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:13","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7f375bc2-6144-49a0-8f02-b2318af98889","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:13","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"32b0bbaf-e559-4508-b192-28e68d2ba3c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":528.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:16","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"306d402d-f054-4d5d-b618-38b6fb68d3e1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"f9045b07-b673-4aef-bcb7-3a445c4c860a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:17","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":584.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.15,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a3fc8481-9c74-4464-a718-5837c1fbc254","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"1722de2f-59e7-466b-a042-aa8cd06c2355","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":435,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"171ccd6f-6617-424d-a813-617a27c5d54c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"bf2f7c23-44e3-4f13-b4c7-1c58de188ff0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":146.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6db685ac-eaca-4e06-abe0-a28b6550ed78","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":160.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"9bb72fb9-3451-439e-b570-927596cbfa70","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":475.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":984,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":836.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"31b9c85c-1a6f-4890-9824-980edbc981cf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":31.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"ea4e8d28-3ab7-43f2-a208-c884826ce896","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":472.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"504fd692-5d1d-4aad-b9d6-b59618ece6a6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":37.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"167ecd6f-f5b4-4c48-880b-5bcdf17e5666","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":473.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0a987608-4c72-4b39-a865-8d9833ce1e50","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":47.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"69097fdc-8fbc-4638-9028-a309de553e6e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":853.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"16a7768d-a5c3-4927-8fa0-8a9ae33156ca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":34.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"c8527c5a-d33e-40d7-a602-44b12fbb0801","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":472.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a7f1dc48-7390-47ce-a10c-bf261fe960ab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":36.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"c723802b-87bc-44fb-8ac1-8838ea47b3a8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:03:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":515.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:32","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"575a8a5e-e0e8-486c-b5db-0d6695eabf48","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":56.6,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"dc0317ae-6fbd-48b3-92fd-8413d9210168","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:32","userId":null}
{"durationMs":54.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238","requestId":"c5923d77-d30e-45bf-a0f8-81e8bd770a52","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200309326706576238"},"durationMs":520.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:34","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"604371fe-4456-463f-b919-be4db10c8590","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:34","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":115.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"9c0cbc54-d514-49f9-bd51-e6f8c09a21e7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:35","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":546,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:03:37","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4187be36-f33a-453b-84a1-5ea4648e8c12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:03:37","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:05:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"74565fe6-cee1-456c-b25b-21a21036b42b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:05:02","userId":null}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-23 20:05:05"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-23 20:05:27"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-23 20:05:34"}
{"durationMs":9.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cbfdf729-041e-4f1d-9d4b-46c79d894f49","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:05:45","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:06:00"}
{"durationMs":175.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"d59e5064-48a4-4908-9965-2ae959feadb9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:06:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":161.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5ec93008-b400-40f5-9f64-0caee1025936","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:06:53","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"id":null,"label":"Pay KES 21,466.00","name":null,"type":null},"durationMs":96,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:06:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1689.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:06:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1680.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:06:54","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ff2de109-3d63-46bf-acc0-cb10d70ff42f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:06:54","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:07:00"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":36,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:10","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":25.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"28a952d8-d58e-4a64-9c10-1cccda388fa6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:10","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"amount":1,"feeItemIds":["b13011dd-a462-405a-86e5-d388cd8b466f"],"guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","invoiceBalance":21466,"invoiceId":"35b80bc4-44ea-43bb-b95d-b18a69cbc0ed","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"cmp8gtpz200fy8bcnxg8120p8","timestamp":"2026-08-23 20:07:10"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-23 20:07:10"}
{"checkoutRequestId":"ws_CO_23082026200711849706576238","guardianId":"1d8921a4-3c48-4035-9b8d-6098367e43c6","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"d7b4953c-6d2e-4c60-9485-44a81f5c2a85","service":"cbc-sms","timestamp":"2026-08-23 20:07:14"}
{"durationMs":4395.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa","requestId":"c952e53a-fe1a-4541-a2d4-f868e992f060","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:14","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/pay-mpesa"},"durationMs":5555.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:15","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":28.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"27209baa-0de6-4467-830e-7819238e2a5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:15","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":64.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"41f2493e-400f-4b45-aff6-9cc9e1195916","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:16","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":465.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:18","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fc63b22c-83de-448d-8ebd-5246cd9231a0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:18","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":59.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"c4277f5e-c848-42c9-996e-5b43e76c84f2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:07:19","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":546.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:20","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b8a98608-a260-444c-93c7-9b1897ce1d97","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:20","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":42.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"b35b6610-b80d-416b-a60f-b2fbeddadf76","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:07:21","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":581.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:22","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"298b9aaf-86bb-4fd3-b47e-0560d4a83d95","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:22","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":62.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"71b73b0c-c5e3-440c-a5f3-d63da21c5cf4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:07:23","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":481.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:24","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"77caeec8-c04c-4694-ab0e-53c48e0200cb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:24","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":58.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"f4bfb89e-9cae-4ad1-89b3-c11ac7ed9172","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:07:25","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":73.11,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"35a2e93f-b244-4916-8112-bc03827eb615","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:26","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":909,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:26","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a90451dc-c40e-4e86-9667-e1236ebd2d32","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:26","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":55.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238","requestId":"6ab8aec8-192e-438f-8f9e-57f07d557403","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees/payment-status/ws_CO_23082026200711849706576238"},"durationMs":533.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:28","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6cdc4743-24ac-42ac-9bd4-d5e46df01939","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":139.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"07547fb8-e05d-4022-b379-e91db4bd86ce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":548,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:07:30","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f3c72db2-263a-4050-adc5-7f9906e7282c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:07:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:08:00"}
{"durationMs":2.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"eff37c85-7430-4f37-a9ed-89ef79ce3579","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:08:27","userId":null}
{"durationMs":2.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"78c6b961-9d00-4794-9a31-9e5c86ea4766","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:08:27","userId":null}
{"durationMs":57.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"4f0eb198-6b12-4572-8fe0-8000412ad5ff","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:08:27","userId":null}
{"durationMs":55.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"19274df8-9e1f-48b3-b8fa-f08d3aff6680","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:08:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":65.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"beb61cd7-cf0e-4b92-8edd-52d03fc8ab54","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:08:27","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":1199,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:08:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":1177.2,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:08:28","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"facde315-f7a8-4582-9163-3eb37fcccb00","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:08:28","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":456.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:08:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":467.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:08:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c194e785-d232-4dd5-8bdc-9809ed4fc482","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:08:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:08:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:08:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ca4a7e62-eefb-481b-a391-be7d08c2ad45","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:08:31","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:09:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:09:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"92dd8a6a-b520-46b5-b82e-58a5cbd70dc8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:09:55","userId":null}
{"durationMs":2,"ip":"197.155.95.4","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f915955e-0bd4-4275-905a-9bf64364a43f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:09:59","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:09:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"898944ef-4f93-421b-9291-8fe0310cd2bc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:09:59","userId":null}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:10:00","totalConnections":1}
{"body":{"identifier":"robinsonotoch7@gmail.com","password":"[REDACTED]"},"error":"Invalid username or password","ip":"102.0.24.50","level":"error","message":"API Error:","method":"POST","service":"cbc-sms","stack":"Error: Invalid username or password\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:426:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","timestamp":"2026-08-23 20:10:00","url":"/api/v1/auth/login"}
{"durationMs":1287.17,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"74602f61-39e4-48ec-874a-d907f9c316ca","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:10:00","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":1660.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbdb98a4-08c4-44d6-bf99-c5346dd878c5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:01","userId":null}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0bbacd66-1b36-47e3-bc81-6c495d9c67ad","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:02","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":21,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c93a0fdd-38c8-4e82-9322-022b825df7e3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:04","userId":null}
{"body":{"identifier":"robinsonotoch7@gmail.com","password":"[REDACTED]"},"error":"Invalid username or password","ip":"102.0.24.50","level":"error","message":"API Error:","method":"POST","service":"cbc-sms","stack":"Error: Invalid username or password\n    at Object.login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.service.js:426:17)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async login (/home/aereuxky/cbcsms-backend/src/modules/auth/auth.controller.js:34:20)","timestamp":"2026-08-23 20:10:05","url":"/api/v1/auth/login"}
{"durationMs":1974.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"63c8c235-e857-41a8-bf6e-819486813695","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 20:10:05","userId":null}
{"data":{"method":"POST","status":401,"url":"/auth/login"},"durationMs":2384.9,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a23783e-7630-489e-a7b9-678bbd74dd35","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:06","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c4e54cd9-2a51-4c6e-9658-51dec8a86052","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:08","userId":null}
{"durationMs":1463.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"068b86f0-262b-4f13-aff4-63464784c020","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:09","userId":null}
{"durationMs":25.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"30570287-0bea-445f-bba1-b737bb95f38a","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:09","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":82.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"2e0ed56b-78ff-4a93-800a-8dde4fa6eb55","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:09","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":451.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"7399dc69-5ca3-4a1f-971d-378698167f48","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:10:09","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":432.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"200ad238-7a2e-4d23-9e85-cd8c4a16a296","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:10:09","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":450.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e1698054-1176-4aa7-993c-6d0fce15107f","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:10:09","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":121.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"9fdd64f2-adcb-47b7-be8b-a4ffc423665f","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":122.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"fb4fd89d-9e42-4cd2-b57b-bcc652ff5b12","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":115.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"56e09b36-5961-4587-aaaa-8298587cbc19","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":119.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"c331387c-2029-4d08-bfe2-108b21b1a08c","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":597.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"330013e6-834a-42fd-82c9-2ac3dcd64590","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":563.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"748de6f9-9173-4967-91fe-58199b722363","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":659.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"e4301442-1e7b-4a7a-9d57-92b4ea8b7493","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:10","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1857.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":397.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":481.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":8.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f35cdc4a-fce3-423a-9fd7-9da948362d54","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:11","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":836.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":836.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":842.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":664.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":667.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":695.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":698.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":1003,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":1029,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1078,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":10.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a69bf138-c8d3-41af-98fc-f585c14e0102","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:12","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":4,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","timestamp":"2026-08-23 20:10:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"durationMs":6.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ef26c1f5-2629-4b1c-a350-f8db971ee971","schoolId":"78a14f6a-4c90-4dba-8b7a-8f1419cfa698","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:14","userId":"61aac5b2-a12b-417a-82e2-fbb3f13d8d36"}
{"data":{"from":"/guardian","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"from":"/guardian","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:10:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d4acbac3-3653-4d03-a735-24c1400b3235","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:10:43","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:15:00","totalConnections":1}
{"durationMs":1.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5a149f7c-0443-4564-a6ac-5bee5e4b73c1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:18:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":7,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:18:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:18:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":2.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d65dbbdf-f997-4f65-b92b-71258fc4b56c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:32","userId":null}
{"durationMs":1157.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"de8950a8-1d61-4357-ada2-5dc6e667205c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:34","userId":null}
{"durationMs":59.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"3ab44d87-566e-487e-909f-2eded8cb6558","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":391.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/stats","requestId":"0b355556-ce9f-43fa-b78a-99837a5df014","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":533.52,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/revenue-trend","requestId":"0da56fa4-1659-4ddd-94de-5d3f58bbd2a4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":289.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/mpesa-config","requestId":"760d6c40-5eef-4ec5-a7a1-93815504acac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":480.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/recent-activities","requestId":"6d09a778-f863-4a13-9877-432539e0d392","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":2644.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":481.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":126.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"004b2ce3-2380-4f76-8aad-f4b0c7733bc6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":422.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"33598710-f795-4846-bd51-2ee4b608ecda","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":201.55,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"51d78a96-7821-4218-b192-8f9cc38852e0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":678.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c07aa17c-d997-4d06-b03e-dfd18c1c6fab","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":280.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"9a168012-b590-4fe2-a1fd-bb8c20c1ff18","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":267.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"63bbf9bd-c3c9-4869-86e9-9f6627e32726","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":940.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/attendance-trend","requestId":"4a5217f5-4400-4d8c-aa27-ae701205c51e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":643.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/sms/settings","requestId":"ebaaef71-426b-45e3-bbf0-7207c00d5be0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":282.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"aa54bbd7-52e9-4565-9e32-edfa4ce91a2c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":580.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"8dd24148-39d3-43b4-8734-8a2851e10c24","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":722.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"ab5f22ca-adcf-4564-8991-9a9f9284985e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":419.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/reports/dashboard","requestId":"a42a0abd-e3f3-430d-b26d-37486473bf62","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":856.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/dashboard/grade-distribution","requestId":"349c10b2-a465-403e-ad61-c703f3c1b543","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":545.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communications/whatsapp/status","requestId":"64b48005-0f7e-42da-a395-08a0460823cb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/stats"},"durationMs":882.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/revenue-trend"},"durationMs":996,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/mpesa-config"},"durationMs":1403.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/recent-activities"},"durationMs":1497.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fdfdaed4-0b22-40fd-95c7-2d4925431755","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1683.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":1333.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1823.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":1580.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":1581.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/attendance-trend"},"durationMs":1990.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":1582.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/reports/dashboard"},"durationMs":1593,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/dashboard/grade-distribution"},"durationMs":2001.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/sms/settings"},"durationMs":2030.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":2031.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":2054.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communications/whatsapp/status"},"durationMs":2054,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"57be2175-d14d-40cd-bebb-9371baebd2f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787505519807-285864","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"96eff2ab-3e3e-4d17-bbfd-0f062e7de9ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":114.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"7b8cc061-d4ad-43f3-94c9-38331cdcfa77","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":163.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"b41d4e37-3917-4d44-a2c8-8beccededefa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":163.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"df6762c1-c522-4799-9305-13b1df15e4df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","href":"/dashboard/students","navId":"1787505519807-285864","text":"Students","to":"/dashboard/students"},"durationMs":3539,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787505519807-285864","to":"/dashboard/students"},"durationMs":3539,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard","navId":"1787505519807-285864","to":"/dashboard/students"},"durationMs":3586,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":628.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":641.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":642.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b40c5348-f7ac-4227-b136-fa74e285b39b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Add Student","name":null,"type":"button"},"durationMs":11,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":null,"navId":null,"text":null,"to":"/dashboard/students/new"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":37.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"eb57eb74-3607-4056-a4e7-b84ea06d644a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":64.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"a48f46ab-ee87-4dd8-a792-24ce7dca7a93","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":89.03,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"76b1a5e7-477c-46fc-be68-196b45d52f07","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":130.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/next-admission-number","requestId":"1d25dff6-5344-4946-bb49-7a26ab9d08a5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":null,"to":"/dashboard/students/new"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":540.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":574.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/next-admission-number"},"durationMs":610.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8edcbf88-a51d-4558-a047-f59e95b8c529","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/next-admission-number","requestId":"318436c3-a535-4272-b822-cfe8350d1454","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:18:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Autofill Next","name":null,"type":"button"},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/next-admission-number"},"durationMs":459.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:18:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7a10d134-607d-435c-b548-4e3ebaa895e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:18:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:19:00"}
{"data":{"id":null,"label":"Select Date of Birth","name":null,"type":"button"},"durationMs":85,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"34c16ae0-a23d-4882-a88f-524120601f81","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"2010","name":null,"type":"button"},"durationMs":22,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"788b52c8-e8bc-4b0b-a647-359139f6de89","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":"next-month","type":"button"},"durationMs":26,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":29.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"09b5ffe1-3d13-4a6e-b2f1-7ee3f3d70e2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":"next-month","type":"button"},"durationMs":19,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":"next-month","type":"button"},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":"next-month","type":"button"},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":39.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"49f29eb3-041a-443f-92ea-23dcab3b4f4e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"9","name":"day","type":"button"},"durationMs":46,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:23","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a0fae3d7-b074-467a-9e0d-608b07127b8a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:23","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"027f01c3-a797-422f-8a1f-89dfec78f2b7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:19:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Next: Academic & Guardians","name":null,"type":"button"},"durationMs":45,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f770c5e4-b065-4b72-8124-2d50e041f37a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":65.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"95da275d-15f3-4f7d-bf4c-4426369157d6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:19:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":624.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":769.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"281d33a6-b562-495e-b9f4-20f6f52ce745","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":40.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams?gradeLevelId=cmp8gtpoj00dq8bcn0szz5jea","requestId":"ffd53e5a-29bc-431b-a1b8-2333d3f5431f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":462.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:41","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.19,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46007e7f-accc-4d00-ad0c-3ee1dbde3a9d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:41","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Add Guardian","name":null,"type":"button"},"durationMs":44,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:19:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d83850a4-dd74-4490-a96c-a03bf1d513e8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:19:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:20:00","totalConnections":1}
{"durationMs":0.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"43ca9e5e-607a-4e2d-a775-a39b8ed04bde","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:02","userId":null}
{"level":"info","message":"\nSIGTERM received. Starting graceful shutdown...","service":"cbc-sms","timestamp":"2026-08-23 20:20:12"}
{"level":"info","message":"Redis not configured, continuing without cache","service":"cbc-sms","timestamp":"2026-08-23 20:20:36"}
{"level":"info","message":"Serving frontend static files from: /home/aereuxky/cbcsms-backend/public","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"Testing database connection...","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✓ Sequelize database connection established successfully","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✓ Database connected successfully","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✓ Database schema loaded (models initialized)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✅ Socket.IO initialized for real-time notifications","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✅ Scheduled Messages cron job initialized (runs every minute)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"[Email Queue Job] Initializing 24/7 background worker (interval: 15000ms)...","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✓ [Email Queue Job] Background worker active","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✅ Weekly fee clearance email job initialized (runs every Monday at 9:00 AM)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"[Subscription Job] Initializing 24/7 Subscription Reminder Background Worker...","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✓ [Subscription Job] Subscription reminder worker registered and active","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"Initializing integration sync cron job","schedule":"*/5 * * * *","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"Integration sync cron job initialized successfully","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✅ Background worker jobs initialized (Email Queue 24/7 active)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✅ Guardian Email Worker started (enforcement mode)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"🚀 CBC SMS Server started successfully","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"📍 Environment: production","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"🌐 Server: http://0.0.0.0:5000","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"💾 Database: Connected (Sequelize ORM)","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"✨ Tables: 169 models loaded","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"level":"info","message":"============================================================","service":"cbc-sms","timestamp":"2026-08-23 20:20:38"}
{"data":{"method":"GET","status":503,"url":"/communication/notifications/inbox-count"},"durationMs":414.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":503,"url":"/communication/notifications/unread-count"},"durationMs":402.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:39","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":59.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f5945811-5afc-4e2d-a7ca-a45dc94dbd6e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:39","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[Subscription Job] Starting subscription & trial reminder cycle at 2026-08-23T17:20:48.855Z","service":"cbc-sms","timestamp":"2026-08-23 20:20:48"}
{"level":"info","message":"[Subscription Job] Evaluating 2 trial tenants","service":"cbc-sms","timestamp":"2026-08-23 20:20:48"}
{"level":"info","message":"[Subscription Job] Trial reminder (1d left) for school: Bungoma","service":"cbc-sms","timestamp":"2026-08-23 20:20:48"}
{"level":"info","message":"[Subscription Job] Trial expired for school: kisii Highschool (9ab76bf8-b86a-4183-b39a-d1270d2ef574)","service":"cbc-sms","timestamp":"2026-08-23 20:20:48"}
{"level":"info","message":"[Subscription Job] Evaluating 0 subscribed tenants","service":"cbc-sms","timestamp":"2026-08-23 20:20:48"}
{"level":"info","message":"[Subscription Job] Evaluating 4 unpaid subscription invoices","service":"cbc-sms","timestamp":"2026-08-23 20:20:49"}
{"level":"info","message":"[Subscription Job] Subscription & trial reminder cycle completed successfully","service":"cbc-sms","timestamp":"2026-08-23 20:20:49"}
{"durationMs":9.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/services/transport-routes","requestId":"3e3b9b9d-55da-4a16-a71f-c1b2a2741bc1","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-23 20:20:53","userId":null}
{"durationMs":2.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/services/meal-plans","requestId":"8f118310-280c-4040-9415-71ac8776979d","schoolId":null,"service":"cbc-sms","status":404,"timestamp":"2026-08-23 20:20:53","userId":null}
{"durationMs":258.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/uniforms/items","requestId":"78ed45ed-1d11-4c93-af6e-eebf78a2e368","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":267.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/finance/fee-structures","requestId":"8757cf72-09ec-43b4-b4d5-9ef5d2797845","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Next: Services & Finalize","name":null,"type":"button"},"durationMs":43,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":404,"url":"/services/transport-routes"},"durationMs":530.5,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":404,"url":"/services/meal-plans"},"durationMs":543.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/uniforms/items"},"durationMs":785.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/finance/fee-structures"},"durationMs":801.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.76,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1b236768-9a25-4cfa-ba8b-9b91595cbc12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":2.53,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"033e26fb-4474-4f33-b145-38e54a15671c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:57","userId":null}
{"data":{"id":null,"label":"Complete Registration","name":null,"type":"submit"},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students/new","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:20:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"acf6b60a-313c-43cd-b105-4708824500bf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:20:58","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":2516.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/students","requestId":"47907a6b-132e-43bd-86d4-89be0d0f7766","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":201,"timestamp":"2026-08-23 20:21:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:21:00"}
{"durationMs":87.91,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/next-admission-number","requestId":"5946dcc3-06e1-45da-9683-fd2c06679690","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":456.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"5bf876a5-bb8a-4428-8707-827c5f389517","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":621.47,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"0ad67ad5-8915-41d4-8906-abe2c8b7844f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":623.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"517858ac-ae10-4c30-a7c0-807ea0e0b0e7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"POST","status":201,"url":"/students"},"durationMs":2909.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students/new","href":null,"navId":null,"text":null,"to":"/dashboard/students"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students/new","navId":null,"to":"/dashboard/students"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/next-admission-number"},"durationMs":466.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"51ce9d2a-0885-4921-961e-58aff47c44c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":904.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":1066.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":1083.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:21:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":33.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0dafbf3c-9a83-4896-ba3b-946d967fbfaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":2.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d99c2858-1ee5-41ad-86ed-0d59ea365b3b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:21:55","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:22:00"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":5,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:22:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":3.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0914993e-1ebd-404c-a4a0-4ec99b1a3429","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:15","userId":null}
{"durationMs":732.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/login","requestId":"f42902f4-c523-4dda-acc1-33626f587da5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:16","userId":null}
{"data":{"id":null,"label":"Sign In to Dashboard","name":null,"type":"submit"},"durationMs":47,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 20:22:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":null}
{"durationMs":1.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"76028fd8-3f75-4d10-874e-8f59f962af2e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:16","userId":null}
{"durationMs":40.13,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"de2f20c5-e3fd-4be1-920f-3fde9853b2d3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":242.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"55ddd558-d9b3-4d0b-879b-f8f945cc12e6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":349.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/grade-levels","requestId":"213f8e62-adbe-4d05-bd81-4ff7e5baaa09","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":425.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/terms?isCurrent=true","requestId":"4fd1e9db-18a5-4805-bac6-a13715e628e7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"POST","status":200,"url":"/auth/login"},"durationMs":1142.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/login","href":null,"navId":null,"text":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/login","navId":null,"to":"/dashboard"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":443.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":22.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1bbc0fea-f6f1-4366-af7d-2de6be78f16d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":249.05,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/learning-areas","requestId":"237999b0-350c-4955-b0c8-ddedd1d48991","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":352.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"60fce0fa-24af-4627-88df-37b1e31161cf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":524.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c6ea3399-345c-4f67-9175-7b72eb1066d1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":507.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8df7a940-09c6-4b3d-bf3d-d76e0f6969bb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":499.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"1ac1f5c5-8f75-4918-bff0-b7269d349a1a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":58.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"7d621ab0-13ed-4881-8403-31157f6a9721","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":117.85,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"196decdf-f517-4e9c-837c-919d650359c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":60.31,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"2bd77c1c-b1d6-4d96-987a-9911358181ef","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/dashboard","href":null,"navId":null,"text":null,"to":"/guardian"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/dashboard","navId":null,"to":"/guardian"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":608.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/academics/grade-levels"},"durationMs":721.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/school/terms?isCurrent=true"},"durationMs":807.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/academics/learning-areas"},"durationMs":874.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":875.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":917.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":919.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":923.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":450.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":488.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:18","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":9.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4f45065b-6740-4c45-b8d3-37666893898d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":418.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":8.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aae2091f-5ea3-434d-8db2-9fa4c88494a9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:19","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"Pay Fees","name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian","href":null,"navId":null,"text":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"46509345-8315-446b-8388-61d87f7d421e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:31","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":83.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","requestId":"9f94552d-6528-4f41-ae06-c37b0d67675a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:31","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":51.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"6d0b9aa3-9e15-4fa0-9634-4de0fe4abaac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:31","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian","navId":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":445.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":8.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"97762400-88ee-4cc3-a952-4ab3d0527c9e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:32","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":410.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":10.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"c764acc7-f991-46ce-8e6c-e659009173ee","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:32","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"Pay KES 43,790.50","name":null,"type":null},"durationMs":27,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":9.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"cbd8b89b-aebb-480b-a61e-5afbd55a3b09","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:37","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"amount":1,"feeItemIds":["33911942-a30b-41e6-a2a1-8de4356ee65b"],"guardianId":"b921e25c-ef97-43b0-a355-9c1e9755d680","invoiceBalance":43790.5,"invoiceId":"bd75a549-7486-4b62-96a0-ae5aeaa33b5b","level":"info","message":"[Guardian Payment] Initiating M-Pesa payment","service":"cbc-sms","studentId":"ccf1345c-ce6c-441f-a9da-c788b4eaca0c","timestamp":"2026-08-23 20:22:50"}
{"bankAccount":"***6152","bankName":"KCB Bank","bankPaybill":"522522","level":"info","message":"[Guardian Payment] Bank C2B direct settlement configured","service":"cbc-sms","timestamp":"2026-08-23 20:22:50"}
{"data":{"id":null,"label":"Pay KES 1 via M-Pesa STK","name":null,"type":null},"durationMs":61,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":17.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6889b069-7eb1-4df9-9ba9-6335988fe5d8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:50","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"checkoutRequestId":"ws_CO_23082026202249719706576238","guardianId":"b921e25c-ef97-43b0-a355-9c1e9755d680","level":"info","message":"[Guardian Payment] STK Push initiated successfully","requestId":"eadd49f1-3dbe-44a8-83be-604937dfc65f","service":"cbc-sms","timestamp":"2026-08-23 20:22:52"}
{"durationMs":2063.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/pay-mpesa","requestId":"d6d1b558-feed-46d8-be76-bdc88f400995","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:52","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"POST","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/pay-mpesa"},"durationMs":2444.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":9.66,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a5bf03db-45d8-4598-a1d3-2e7c2d0d5125","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:53","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":56.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"b756dcb3-7eab-4027-8dd3-36fef52bfecf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:54","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":425.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:55","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2b25b95b-e6c0-4656-8373-ac7bc09eee4c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:55","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":57.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"8d00c002-7092-4aa7-aa98-270df429f5b6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:22:56","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":432.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":10.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4b18dd2d-6b5b-48ef-ac23-0b09d1a99949","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:57","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":50.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"9deae6d3-ba28-42e1-b139-822d6493e573","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:22:58","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":412.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:22:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5c299bd5-c3db-4d04-b91e-9beddb6c8006","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:22:59","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":44.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"ce791e8c-1aad-49c3-9566-a91a25095405","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:23:00","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:23:01"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":466.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":8.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75b9b474-deea-4a5d-b4f8-e64cd53a261c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:01","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":80.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"197343d9-2a81-4416-90f7-513649e45467","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:23:02","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":108.35,"ip":"196.201.212.69","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/mpesa/callback","requestId":"cc9bdbd2-b012-4cf9-9c67-d6b8895f51cc","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:02","userId":null}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":498.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0a5adc02-0aac-4ed6-ba67-654cbea3dc6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:03","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":39.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238","requestId":"c961abd1-fb41-428b-a27c-faae1dddf1c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:04","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/payment-status/ws_CO_23082026202249719706576238"},"durationMs":484.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":10.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"91db9ab0-1703-4622-8ea9-d39188f946f0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:05","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":92.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","requestId":"13f725c5-caeb-4995-a73d-0e1bb1f39261","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:07","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":443.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":16.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1aad5d41-0a22-4f07-9773-2ca6e95d3129","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:08","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":15,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:11","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":8.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3cb70bed-2ec2-4155-9ff5-4aecc0b6b59c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:11","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":12,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","href":null,"navId":null,"text":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":9.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"87d1c52e-6b40-478a-9513-397ee547393b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:13","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"Back to Fee Summary","name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt","href":null,"navId":null,"text":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment/fcccd3cd-2a12-45b4-9576-a83c56d6a193/receipt","navId":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":11.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dade3827-f316-4947-8d2d-cf0df924c003","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"href":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505793266-676339","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:17","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.25,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"81ca6d01-c4ad-46ea-b65f-7391b2e3c690","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:17","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":50.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"db6a4fc4-c93c-4f04-8be4-ed2c64eec8c5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:23:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":62.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"4a7b7b3d-319c-40db-8724-a3529b07a9a0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:23:18","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":456.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":475.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"Payment History","name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:19","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":11.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a40aaea5-6c3b-426f-9cce-9b22b6c88a4b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:19","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"View Full History","name":null,"type":null},"durationMs":8,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","href":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505793266-676339","text":"Fee PaymentsDue","to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history"},"durationMs":4269,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505793266-676339","to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history"},"durationMs":4269,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505793266-676339","to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history"},"durationMs":4289,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:21","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f281bfba-d8af-41ab-a864-d1e1ca5173f4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:21","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":78.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/notifications?limit=6","requestId":"1306f02a-543c-45b4-9bff-b21e82eee2af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:23:24","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"href":"/guardian","navId":"1787505800492-194623","text":"Home Dashboard"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","href":"/guardian","navId":"1787505800492-194623","text":"Home Dashboard","to":"/guardian"},"durationMs":38,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/payment-history","navId":"1787505800492-194623","to":"/guardian"},"durationMs":74,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/guardian/notifications"},"durationMs":491.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:25","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":11.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"35e2c811-d224-4429-b32f-0c1df39f31fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:25","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"href":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505802470-954197","text":"Fee PaymentsDue"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/guardian","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian","href":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":"1787505802470-954197","text":"Fee PaymentsDue","to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":32,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian","navId":"1787505802470-954197","to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees"},"durationMs":44,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":12.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7e02b1de-926c-4a3f-a958-9855809fd1c6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:27","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"id":null,"label":"View Full Invoice","name":null,"type":null},"durationMs":18,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","href":null,"navId":null,"text":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/invoice/bd75a549-7486-4b62-96a0-ae5aeaa33b5b"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/invoice/bd75a549-7486-4b62-96a0-ae5aeaa33b5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"from":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees","navId":null,"to":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/invoice/bd75a549-7486-4b62-96a0-ae5aeaa33b5b"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/guardian/student/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/fees/invoice/bd75a549-7486-4b62-96a0-ae5aeaa33b5b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:23:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":6.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9b5a409b-86c7-4d7c-a8d0-9a66003e61df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:23:30","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:24:00"}
{"durationMs":1.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e0ce1dd5-e856-474b-ae5a-713c92e97767","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:11","userId":null}
{"durationMs":88.57,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"4a907fe6-1fca-4f78-8dc7-faa61fbb0e77","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:11","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":656.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10","requestId":"ba81feed-360e-4749-8acf-2fa320946298","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":703.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"8cbe041b-c531-4728-856d-6df357ee3327","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":238.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"1177741f-5258-4e8f-8904-cc511c65e1c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":150.88,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"b691492b-c058-4f5e-a94d-9dada8dc03b9","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":154.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/stats","requestId":"61e77c81-bee6-4288-8592-81f39664a545","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":217.94,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"027cf4d6-7836-4421-b8fa-e35412ed421e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":480.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":1207.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1289.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1289.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":1290.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:12","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.18,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"6e8898c9-1a54-4a76-a17d-14ffc73006af","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/stats"},"durationMs":1330,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1330.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"84bff960-8146-45da-8fec-3e0a48958080","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":97.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions","requestId":"1a4369e9-ce0d-4489-a22b-0f15fc9c1cc6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":86.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academic/years","requestId":"ebd1ee97-a3f5-4ba3-ac38-4584ef2223c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":104.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"f1cfbb54-3b8d-4999-8436-df1f7e33ae7d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":242.98,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/promotions/stats","requestId":"28d4264a-42e5-4881-ac61-5c31ad0d2fb1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:30","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Promote Students","name":null,"type":null},"durationMs":45,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions"},"durationMs":525.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":535.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academic/years"},"durationMs":537.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/promotions/stats"},"durationMs":706.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"71e12e06-ab79-41df-924e-77d207f8650f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:31","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":55.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"3c48766e-7011-4e7b-a1aa-a08b63bb6e60","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":89.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students","requestId":"e2c7f985-319d-4b5a-8c2d-0f06c2a1a8cb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"ID Cards","name":null,"type":null},"durationMs":9,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.99,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9c8297ca-2d5a-4547-99c1-22c05dd9a6fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:32","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":58.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"33be57bc-5ee2-4923-9402-51cd0a54e94d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":87.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10&status=TRANSFERRED","requestId":"3d2fbcfc-7e9e-4cae-8e86-039801ece5fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":489.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":504,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Transferred","name":null,"type":null},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"447e3db7-1cf9-43dc-9666-fdbfaffac13d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:33","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":443.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":464.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:34","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":25.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"aa729a51-d4c4-45da-b39f-99fc23b9b087","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":118.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?status=ACTIVE&limit=100","requestId":"fe3e67f9-77eb-432e-a273-eaaa17ce5d26","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:34","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Student Clearance","name":null,"type":null},"durationMs":13,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:35","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ddb4e76c-df2f-481b-ad0e-1ecb5cb6bd6c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":35.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"8015d2e0-76d5-4fdb-a263-dd238b17373e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:35","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":840.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Transferred","name":null,"type":null},"durationMs":24,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":407.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:36","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.79,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4e7aa362-7371-4e7d-bbcf-49ae92348601","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.41,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students?page=1&limit=10&status=GRADUATED","requestId":"0f5f9056-39af-4cd1-93da-38214c514dad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":42.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"73fc1367-c265-458b-9d6a-1e82f1c45b40","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Alumni","name":null,"type":null},"durationMs":49,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students"},"durationMs":436.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":497.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:42","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"056e7d0e-c8e3-4eed-8340-c8803a725494","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Student Clearance","name":null,"type":null},"durationMs":20,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0cf9f49e-c350-4404-848e-a82b547c02df","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":38.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"c3b97881-3555-43f0-8b59-948e2381a304","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Dashboard","name":null,"type":null},"durationMs":74,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":407.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8af27f08-fa6e-42d5-a606-ce6bdfe1ba10","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":77.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"6849d0eb-97e3-4f34-9dc8-f9c7e5345faa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":73.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"84f13217-d722-46a9-a9b9-412653b08b08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":117.37,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c","requestId":"f0f364f2-5b87-4a98-b172-5f0e9565a4b1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":"button"},"durationMs":6,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":null,"navId":null,"text":null,"to":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":null,"to":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"35b8707f-6026-4cee-b3ae-a620f5ba86ac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.63,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams?gradeLevelId=cmp8gtpoj00dq8bcn0szz5jea","requestId":"68286fe0-3a54-4144-ae2d-c949695ef0ac","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":502.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":509.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c"},"durationMs":539.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":406.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:50","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3a656ea5-5b63-46d2-abc6-9fd5d48c6def","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":34.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"f9727bb5-eb0b-4724-b2fa-69b48b189470","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/students","navId":"1787505888503-525155","text":"Students"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit","href":"/dashboard/students","navId":"1787505888503-525155","text":"Students","to":"/dashboard/students"},"durationMs":77,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students/ccf1345c-ce6c-441f-a9da-c788b4eaca0c/edit","navId":"1787505888503-525155","to":"/dashboard/students"},"durationMs":151,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":462.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:24:53","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":22.29,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dbb2f595-27f9-46ca-8583-9c3602f91d25","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:24:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:25:00","totalConnections":1}
{"durationMs":212.95,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/senior-secondary/pathways/stats","requestId":"4d501728-5030-4883-a686-9b1272eff79f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":223.62,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/senior-secondary/pathways","requestId":"d0260c46-bf7c-4e9d-84d4-5abf74200bf0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/senior/pathways","navId":"1787505896259-352076","text":"Pathways"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/students","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","href":"/dashboard/senior/pathways","navId":"1787505896259-352076","text":"Pathways","to":"/dashboard/senior/pathways"},"durationMs":445,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/senior/pathways","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/students","navId":"1787505896259-352076","to":"/dashboard/senior/pathways"},"durationMs":464,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/senior/pathways","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"870def09-424c-43cf-bf3b-d8750fadee23","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:00","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/senior-secondary/pathways/stats"},"durationMs":595.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/senior-secondary/pathways"},"durationMs":603.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"56048220-67b0-4bcd-8ea1-427542de3426","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b40ea351-507c-4f67-866a-8be2e3c3f70d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:02","userId":null}
{"body":{"limit":20,"page":1},"error":"Unknown column 'counselor.photoUrl' in 'field list'","ip":"102.0.24.50","level":"error","message":"API Error:","method":"GET","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async MySQLQueryInterface.select (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async CareerGuidanceSession.findAll (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/model.js:1140:21)\n    at async Promise.all (index 1)\n    at async CareerGuidanceSession.findAndCountAll (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/model.js:1322:27)\n    at async Object.listSessions (/home/aereuxky/cbcsms-backend/src/modules/senior-secondary/career-guidance.service.js:45:44)\n    at async listSessions (/home/aereuxky/cbcsms-backend/src/modules/senior-secondary/career-guidance.controller.js:6:46)","timestamp":"2026-08-23 20:25:08","url":"/api/v1/senior-secondary/career-guidance","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":343,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/senior-secondary/career-guidance","requestId":"aff1c822-6437-41c6-93e7-4bf3aeab37a1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":500,"timestamp":"2026-08-23 20:25:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":348.72,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/senior-secondary/career-guidance/stats","requestId":"0ed593dd-bafb-47ad-8d02-08d10d80a440","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/senior/career-guidance","navId":"1787505903653-569685","text":"Career Guidance"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/senior/pathways","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/senior/pathways","href":"/dashboard/senior/career-guidance","navId":"1787505903653-569685","text":"Career Guidance","to":"/dashboard/senior/career-guidance"},"durationMs":414,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/senior/career-guidance","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/senior/pathways","navId":"1787505903653-569685","to":"/dashboard/senior/career-guidance"},"durationMs":432,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/senior/career-guidance","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:08","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5e662c22-9feb-46f5-9698-02b3b4af5b7a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:08","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"body":{"limit":20,"page":1},"error":"Unknown column 'counselor.photoUrl' in 'field list'","ip":"102.0.24.50","level":"error","message":"API Error:","method":"GET","service":"cbc-sms","stack":"Error\n    at Query.run (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/dialects/mysql/query.js:52:25)\n    at /home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/sequelize.js:315:28\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async MySQLQueryInterface.select (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/dialects/abstract/query-interface.js:407:12)\n    at async CareerGuidanceSession.findAll (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/model.js:1140:21)\n    at async Promise.all (index 1)\n    at async CareerGuidanceSession.findAndCountAll (/home/aereuxky/nodevenv/cbcsms-backend/22/lib/node_modules/sequelize/lib/model.js:1322:27)\n    at async Object.listSessions (/home/aereuxky/cbcsms-backend/src/modules/senior-secondary/career-guidance.service.js:45:44)\n    at async listSessions (/home/aereuxky/cbcsms-backend/src/modules/senior-secondary/career-guidance.controller.js:6:46)","timestamp":"2026-08-23 20:25:09","url":"/api/v1/senior-secondary/career-guidance","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":62.83,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/senior-secondary/career-guidance","requestId":"781127f0-ea6f-4a22-b6b1-3fb15a46d612","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":500,"timestamp":"2026-08-23 20:25:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/senior-secondary/career-guidance/stats"},"durationMs":766,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":500,"url":"/senior-secondary/career-guidance"},"durationMs":767.1,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:09","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b9bf9112-808b-4241-b471-76672c33d442","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:09","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":500,"url":"/senior-secondary/career-guidance"},"durationMs":442,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:10","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":28.14,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"89ced20d-195c-4eb0-985c-17fe82e504c3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:10","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":46.02,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"2e2dcabd-ee28-4b5f-b1ab-2c34939c4734","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:25:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":68.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"ad912036-b704-413d-8ffa-9143dd478761","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:25:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":456.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":450.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"bbbeffb2-b3d4-4880-a765-1828738aa1d6","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":49.81,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"12365015-5ff9-4448-96eb-48f1ca34b151","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":100.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"9347370e-1e57-4823-bdb3-e33208965c32","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/finance/invoices","navId":"1787505910508-567761","text":"Invoices & Reports"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/senior/career-guidance","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/senior/career-guidance","href":"/dashboard/finance/invoices","navId":"1787505910508-567761","text":"Invoices & Reports","to":"/dashboard/finance/invoices"},"durationMs":778,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/senior/career-guidance","navId":"1787505910508-567761","to":"/dashboard/finance/invoices"},"durationMs":778,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/senior/career-guidance","navId":"1787505910508-567761","to":"/dashboard/finance/invoices"},"durationMs":836,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:15","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":29.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"fbe9f0f6-065f-4adb-9e92-f95db0e25cfa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":261.87,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/payments?page=1&limit=20","requestId":"296c0018-06c5-4b5b-8ded-04ff33d19419","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":279.43,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/dashboard","requestId":"178e9ef2-6337-429c-8b78-9432a60109fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":429.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/invoices?page=1&limit=20","requestId":"fbcfb1f3-1472-4350-8792-f3df1e0b73da","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:15","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":425.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":507.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/payments"},"durationMs":686.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/dashboard"},"durationMs":708,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/invoices"},"durationMs":1027.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:25:16","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.4,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"666c61b2-5229-43e3-af03-1d932d58b120","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:25:16","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:27:00"}
{"data":{"href":"/dashboard/inventory","navId":"1787506062306-597993","text":"Inventory"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":45.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3c2e8b77-194a-457b-a6cf-eed1bdc82870","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":317.84,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/transactions?limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"e35e2ce8-cd37-401a-aae2-2a4d7609396a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":458.09,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"db4e08bd-9764-4cb3-a092-15975738e019","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":497.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?limit=5&sortBy=createdAt&sortOrder=DESC&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"0c4ea701-b9b9-40fb-8bdd-89f01ad96e12","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":567.2,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?lowStock=true&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"4402231e-3648-4a66-bddd-c08a52d79065","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":240.58,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?limit=10000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"2e082b64-3474-492e-ba4c-38a7d12331a2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","href":"/dashboard/inventory","navId":"1787506062306-597993","text":"Inventory","to":"/dashboard/inventory"},"durationMs":1656,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","navId":"1787506062306-597993","to":"/dashboard/inventory"},"durationMs":1656,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","navId":"1787506062306-597993","to":"/dashboard/inventory"},"durationMs":1677,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/transactions"},"durationMs":742.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:48","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":24.28,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ce7007dc-3934-4bd8-b36c-24ff5f8cebe7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/stats"},"durationMs":831,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":912.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1025.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1145.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":21.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"da1d1c53-7123-4b16-835d-cef95a9d7025","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":51.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/suppliers?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"95a80588-ac50-4e7e-9ab7-6f6c4490fab4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:53","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Suppliers","name":null,"type":null},"durationMs":44,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/suppliers"},"durationMs":445.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:54","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.75,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"57edcb52-2c3f-49b0-a178-74abe6c47e7d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:54","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":101.53,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?page=1&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"aa548eb0-e8a1-4e42-9d9b-7e85475c567e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":98.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/suppliers?limit=1000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"8b64e4a6-5b85-4be3-881f-10e2c7787476","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Purchase Orders","name":null,"type":null},"durationMs":42,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":543.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/suppliers"},"durationMs":543.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:27:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.71,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"db4e417a-e5d8-4ab9-abf5-74d24b58f51f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:27:59","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:28:00"}
{"durationMs":51.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school","requestId":"2846614f-bc8a-4335-9372-a98c53d73572","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:28:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":2,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:28:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school"},"durationMs":429.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:28:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.64,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"740c0669-f283-4409-95ef-7d2ddaa2a85d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:28:05","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":83.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"1bb74875-e852-4f5d-b03e-fd7817d4fd75","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:28:12","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":50.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"cec83494-59ec-4e4c-bc35-ad131031a808","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:28:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":495.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:28:13","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"a7832fce-4f08-47f8-aa0b-6a11f7f8d668","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:28:13","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":560.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:28:14","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":16.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"74e78be2-fd77-45cb-b55a-4437fd44d9e7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:28:14","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:30:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6350cec9-f896-4134-93b1-9671d3deb2ce","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:30:01","userId":null}
{"durationMs":0.97,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"03511052-8904-4f8d-ac9f-a5a6bf1b43e4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:30:03","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:31:00"}
{"durationMs":60.54,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"90c33e26-32c7-40e2-ae0f-2d00774d3177","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:31:26","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":68.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"e5f57311-ab48-4a05-88a5-77e7c864e37f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 20:31:26","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1345.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:31:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1344.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 20:31:27","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"durationMs":10.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3bd3ae88-32e8-45cb-bb23-c3de4ff60661","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:31:27","userId":"63b5f1f5-d17f-422b-a83b-578d090facb6"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:35:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"bab2d008-c7a9-428f-81e9-165283afdf60","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:40:00","totalConnections":1}
{"durationMs":1.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"18cbea8d-3d87-4aff-8a11-280304871df8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:45:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7e42ca14-fd06-4519-a840-98be8fc9627d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:50:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc5a5a35-ba9f-4c7f-a71c-e74d36d5d092","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 20:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 20:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 20:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 20:55:00","totalConnections":1}
{"durationMs":1.03,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"84d10758-9e01-4050-8755-3a25440e5d6c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 20:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 20:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:00:00","totalConnections":1}
{"durationMs":1.99,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8c656316-0610-4741-8ec1-4023e1508c72","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:03:00"}
{"durationMs":2.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aef1bfa8-9334-478a-bb80-08d8da409a4b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:39","userId":null}
{"durationMs":5.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"109223fc-d498-40cb-97f0-f58850d0b176","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":2.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"da5c7032-5e4e-4df2-999a-802e1c506dcf","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":3.56,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b8e42725-1d98-470f-8689-41b6715ff76b","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":3.42,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"f3fef9d0-d96f-41f3-ac14-d93a5b630531","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":3.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"0a34ca11-ce17-4423-bed3-3b24f6f56d11","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":1.92,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?lowStock=true&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"7891a593-835b-4538-8c16-71f02c2f1309","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":1.68,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?limit=5&sortBy=createdAt&sortOrder=DESC&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"f6ee8226-4818-4740-9d23-0f25399ae065","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":1.12,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/transactions?limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"b784b60c-ab3d-4a71-8cb8-3ef792072d6d","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":1.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?limit=10000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"3842e14b-460c-4810-89dc-4356aacaa1a6","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":34.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"c375bdf0-1872-42c4-a4ca-813717a16f54","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:41","userId":null}
{"durationMs":480.38,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"96c52c8e-50c4-4d7c-a33d-b798f5f622c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":669,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?limit=5&sortBy=createdAt&sortOrder=DESC&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"aedec3f1-a80f-49d1-af80-6f090fc72ffa","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":666.61,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?limit=10000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"a5f6e730-a916-4573-9043-81a9014feab0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":632.24,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?lowStock=true&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"836bc23a-e443-4e76-89fb-99ce1ec5520d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":678.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/transactions?limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"ead92042-77b1-4957-8377-c96d5d86aa6a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":662.73,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"75680da0-c905-4ec2-9de8-41e6c1f59b53","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":682.49,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"867c65be-0913-4b9f-b75f-c4f54d641251","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":702.06,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"cd59e044-a50d-4340-af99-75ed3f141949","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":707.48,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"114add44-335c-446b-8e03-e2ba05bfe227","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:42","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/school/enabled-modules"},"durationMs":446.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":447.7,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":506.9,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":868.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/inventory/stats"},"durationMs":868.7,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/inventory/items"},"durationMs":886.3,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/inventory/purchase-orders"},"durationMs":886.6,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/inventory/transactions"},"durationMs":887,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":401,"url":"/inventory/items"},"durationMs":887.4,"event":"API_ERROR","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:43","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.45,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"75176e17-afb1-42bf-a181-5fdf4c591e85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":64.6,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/departments?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"1b72bccc-6b98-4242-9e9b-3ee1c3d82ccb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:43","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":883.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":1063.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1103.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1109.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/transactions"},"durationMs":1121.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/stats"},"durationMs":1122.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1124.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1125,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1125.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Items","name":null,"type":null},"durationMs":90,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/departments"},"durationMs":442.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:44","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.08,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3569e4b3-85fc-42de-92a5-cc243a4ff02d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Stock Level","name":null,"type":null},"durationMs":58,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:46","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":17.5,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"45d4597d-3a6e-4f08-8e73-510fcecdc0dc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:46","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":63.36,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/suppliers?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"bd72bbfc-39da-4776-a658-b6d5aa53c8f3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Suppliers","name":null,"type":null},"durationMs":41,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/suppliers"},"durationMs":410.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:47","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.27,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d7286089-5a66-44ed-a36b-e0684a141297","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:47","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":61.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/suppliers?limit=1000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"4e372124-35bb-49b1-94d8-2ab04a3989c7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":69.74,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?page=1&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"5343674d-72df-467d-9ebb-081c3a9a51b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:48","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Purchase Orders","name":null,"type":null},"durationMs":43,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/suppliers"},"durationMs":439.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":445.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:49","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":20.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"95e4b2cd-7b24-4a1a-9859-83f8c783f57e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:49","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":127.26,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/invoices?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"e5250f2f-45f8-4b45-8cd8-06956c3a4ad7","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":91.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/suppliers?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"cde1e59d-f2bc-431f-a34e-aa9dbdb9e637","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:03:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":91.9,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"fe0eaca2-6515-4e04-a86e-a668f654de58","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":140.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/invoices/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"8617f048-ebf6-4972-a375-2d04e508e08c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:50","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":145.01,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/grn?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"d74fbef7-f155-4ad7-8f77-70f825ec5a8d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":143.51,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/grn/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"6e9882ca-6194-402e-89df-2e68dd27c8dd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":125.44,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/grn/pending?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"d65628fb-e3ae-4dd6-81fb-9e0ecc1ed9c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":131.93,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?status=APPROVED,SENT,PARTIAL&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"8bc5c70a-af81-45cb-8bae-71df3eeb5686","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Invoices","name":null,"type":null},"durationMs":23,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/suppliers"},"durationMs":509,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/invoices?schoolId=cmp8gtb7j00008bcnd6vyf567"},"durationMs":509.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":518.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/invoices/stats"},"durationMs":519,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Goods Received","name":null,"type":null},"durationMs":17,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:51","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.69,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ee29b8c0-46c3-4e53-9140-c69929a513b5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:51","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/grn?schoolId=cmp8gtb7j00008bcnd6vyf567"},"durationMs":560.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/grn/stats"},"durationMs":574.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/grn/pending"},"durationMs":604.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders?status=APPROVED,SENT,PARTIAL"},"durationMs":606.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:03:52","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":19.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"930c7cb3-555b-412f-a3c9-d0f933fd2b85","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:03:52","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:04:00"}
{"data":{"href":"/dashboard/finance/invoices","navId":"1787508237066-543181","text":"Invoices & Reports"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":23.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"51c21eca-5a88-4358-a81c-7d0c77920b9c","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":147.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/streams","requestId":"d8d96805-6519-49c7-9b94-e15783c2f2d0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":146.7,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/academics/classes","requestId":"9920a667-c55f-4b16-9cfb-ab9ce323fa24","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":243.86,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/payments?page=1&limit=20","requestId":"826a1d21-7735-46a5-b630-059241c70dfe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:04:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":300.82,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/dashboard","requestId":"9de01d54-a9b9-4094-b573-8c448234e863","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:04:02","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":431.3,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/fees/invoices?page=1&limit=20","requestId":"a0055d8b-c5ef-4b46-b9bd-edca75dd6d3a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:04:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/inventory","href":"/dashboard/finance/invoices","navId":"1787508237066-543181","text":"Invoices & Reports","to":"/dashboard/finance/invoices"},"durationMs":1729,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/inventory","navId":"1787508237066-543181","to":"/dashboard/finance/invoices"},"durationMs":1729,"event":"NAV_STALL","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation stall before route change","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/inventory","navId":"1787508237066-543181","to":"/dashboard/finance/invoices"},"durationMs":1767,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/streams"},"durationMs":498.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/academics/classes"},"durationMs":516.9,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/payments"},"durationMs":646.6,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/dashboard"},"durationMs":679.5,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:03","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":26.67,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"28f21fe1-477d-4b56-8034-c5e1271c3796","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:03","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/fees/invoices"},"durationMs":830.4,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.8,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"da939a3e-0658-405e-bde8-251f8554eeae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:04","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"href":"/dashboard/inventory","navId":"1787508272752-813220","text":"Inventory"},"durationMs":null,"event":"NAV_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Navigation click","path":"/dashboard/finance/invoices","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","href":"/dashboard/inventory","navId":"1787508272752-813220","text":"Inventory","to":"/dashboard/inventory"},"durationMs":67,"event":"NAV_PATH_CHANGE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route path change","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"from":"/dashboard/finance/invoices","navId":"1787508272752-813220","to":"/dashboard/inventory"},"durationMs":87,"event":"NAV_RENDER","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Route rendered","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:37","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":32.77,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9ec70cbc-7df4-4254-a67b-f6d6aba6693a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:37","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Items","name":null,"type":null},"durationMs":63,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:04:40","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.97,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2c06af09-9649-4bb6-9daf-6b607e5b5a8e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:04:40","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:05:00","totalConnections":1}
{"durationMs":1.62,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"33115d1b-22a0-4f2e-9e51-5c436258e5e3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:05:02","userId":null}
{"durationMs":300.96,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"6146d033-ca1a-499f-a872-656ead97d165","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:05:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":312.89,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"37534258-e820-4f1c-867f-b74531aafc9a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:05:44","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1497.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:05:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1503.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:05:45","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":30.21,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"1fa8b409-91f4-40b4-b2fe-ef17aabee363","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:05:45","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:06:00"}
{"durationMs":2.44,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b70d3c90-7b07-4ab5-8843-f095e1b0f990","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:06:51","userId":null}
{"durationMs":2.04,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"99b8b91d-ec3c-4186-a3dd-8b3a75c522c0","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:06:51","userId":null}
{"durationMs":678.39,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"e034c56c-6b0d-4909-a0df-2c8278e47bb4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":814.11,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?lowStock=true&limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"994c430b-af91-49f1-b8c1-a5b1f81f244d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":849.65,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/items?limit=10000&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"88740309-90d7-40a0-8fe0-a524e1f6b35b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":841.07,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/stats?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"ff58ae56-264c-4e6f-ac4b-8d390b5ff876","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":903.33,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"7a569628-f948-4e4b-8c48-77edb94964fb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":902.1,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"8caa78e8-e623-4142-b664-b766e7ee3e15","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":805.34,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/purchase-orders?limit=5&sortBy=createdAt&sortOrder=DESC&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"7acd63bb-4a2c-4a3f-8150-a8342eab6342","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":892.23,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/transactions?limit=10&schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"d8d4f4e8-6a65-48a2-9d33-b0cac3a600b0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":907.35,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"869539f8-ff92-4a10-bd69-7f3cd6966766","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:55","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":61.59,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/inventory/departments?schoolId=cmp8gtb7j00008bcnd6vyf567","requestId":"3a6a5b7d-5b30-4794-a4bf-9bf367a9732e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 21:06:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":1134.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1377.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/items"},"durationMs":1378.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/stats"},"durationMs":1381.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1382.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1382.8,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/purchase-orders"},"durationMs":1386.1,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/transactions"},"durationMs":1397.7,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":1398.3,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"id":null,"label":"Items","name":null,"type":null},"durationMs":77,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:56","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":15.22,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"8a43d359-9ec4-4521-b68e-781eb146bf0b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:06:56","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"data":{"method":"GET","status":200,"url":"/inventory/departments"},"durationMs":436.2,"event":"API_RESPONSE","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:06:57","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":18.78,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"b965ec1b-f67f-42cc-9a90-3c485aaa3fb1","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:06:57","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:07:00"}
{"data":{"id":null,"label":null,"name":null,"type":null},"durationMs":42,"event":"UI_CLICK","ip":"102.0.24.50","level":"info","message":"CLIENT_EVENT Action click","path":"/dashboard/inventory","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 21:07:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"durationMs":14.16,"ip":"102.0.24.50","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"f061ba5a-8ed6-4962-b654-97799060c288","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:07:01","userId":"cmp8gtfff00cc8bcnm7wkpzqv"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:10:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7d5c35ec-37e9-4a69-9f93-ff9db4db7c80","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:15:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a2b3ac7a-d2a9-4d78-b96a-09f955beadc4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:18:00"}
{"durationMs":3.49,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"08dab58b-f68b-4021-956c-d6e2ca01b95f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:18:16","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:19:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:20:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:20:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"338fb381-f74c-4f67-84f8-dc7323a66086","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:25:00","totalConnections":1}
{"durationMs":1.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9f16256c-62e7-43b1-9547-f0c60487be96","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:30:00","totalConnections":1}
{"durationMs":1.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c57a4367-fa14-4093-bf6a-3703f6e9051c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:32:00"}
{"durationMs":2.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9b678497-b174-4c98-b572-c6ec2ff0d2bb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:32:23","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:35:00","totalConnections":1}
{"durationMs":4.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c1cf84ec-ed0c-48bc-9eca-834bc2046152","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:40:00","totalConnections":1}
{"durationMs":1.52,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c9457641-63b1-41e3-8a8d-cd7d8e4963b8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:45:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a4e88809-15f7-4f43-867e-ffdc11f78ecf","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:50:00","totalConnections":1}
{"durationMs":3.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"782df1f5-fadd-47e2-9255-fde99afa33ec","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 21:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 21:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 21:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 21:55:00","totalConnections":1}
{"durationMs":1.6,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a9f3997c-fc40-4583-a9a1-90a37a182031","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 21:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 21:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:00:00","totalConnections":1}
{"durationMs":2.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6119f5f7-6f1e-4659-87ea-6a230124ff45","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:05:00","totalConnections":1}
{"durationMs":1.16,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7d0ec8de-946e-45cb-b6f6-300208e43bfb","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:10:00","totalConnections":1}
{"durationMs":1.56,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7b6fc415-6b83-4d5e-84dc-70207c695d7a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:14:00"}
{"durationMs":3.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"5e97e0f5-2d37-4740-b0d3-a007f3d203eb","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":2.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"8d60b1f8-5aa5-446c-9860-905d340136fb","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":1.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"c1ee89ef-69ee-45d0-9c2b-4bedc5f7beaa","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":1.99,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"8b30a553-4733-4f07-b131-8de301805232","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":2.73,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"c8c11123-9569-4623-8565-ecdabb63a3b0","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":2.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"41e34896-d436-4e9d-861c-0928c593e655","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:14:27","userId":null}
{"durationMs":52.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"a3e73a4f-f40b-403d-9a7d-ed0534dffec8","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:14:28","userId":null}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/unread-count"},"durationMs":1708,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/guardian/payment-methods"},"durationMs":1709.6,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications"},"durationMs":1711.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/guardian/dashboard"},"durationMs":1712.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/communication/notifications/inbox-count"},"durationMs":1722.5,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1723.8,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:29","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":14.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9890564e-b9c8-4ce9-bacf-130f17d957f5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":184.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"9016a804-4427-48f3-b52a-c44c50e2643a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":176.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"f0418173-ad19-4d98-9f2b-93d8973e9656","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":170.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"53270156-9b2f-4d37-8a0c-35e9e10f2066","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":287.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"6509bd60-ff49-427c-b576-27e74353ccce","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":471.61,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"24283157-660e-4716-bf8b-e416e2b6d87d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":497.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"7df6191b-8348-40c2-a9e8-935b378f557a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:14:29","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":831.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":832.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":832.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":944.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":1151.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":1218.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:14:30","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":8.26,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"54cde497-97af-416a-8e56-f8a532366f88","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:14:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:15:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9dbd2783-cd1f-4d0e-91da-007595888961","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:17:00"}
{"durationMs":73.45,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"3325b8fa-6072-45b5-841b-abff4533e214","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:17:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":83.62,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ac4004da-25b2-42bd-a4d5-1681b51b9c0d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:17:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1102.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:17:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1104.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:17:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.72,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"87f10c89-6d2e-44e6-96de-cc752eef91ea","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:17:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:18:00"}
{"durationMs":85.69,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"bcdc0bd7-e24d-40ea-bddc-421ecd6da1e0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:18:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":92.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"8ac77cfc-8360-4b72-8bb3-b28a25691885","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:18:30","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":448.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:18:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":447.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:18:31","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":6.12,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"4b1e0389-61b5-459b-bdbd-7507fb258b8f","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:18:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:19:00"}
{"durationMs":187.9,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"1415ffc1-51b5-4b68-baf8-1a4aa5a3f818","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:19:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":181.87,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"24e27048-2d25-4665-ac2c-83726ffe73f8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:19:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":556.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:19:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":556.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:19:32","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.68,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"9d2bc853-ac16-4121-9827-fd913fcf56a8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:19:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:20:00","totalConnections":1}
{"durationMs":3.77,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"59300211-05e7-4e40-a24f-61d8ad2be370","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:20:02","userId":null}
{"durationMs":53,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"62d7cecc-dc5f-4f8e-9ed9-1c392bb053ba","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:20:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":74.84,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"2416324e-cbd7-4dd8-83e6-dfd544435bc4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:20:31","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":433.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:20:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":443.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:20:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.16,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"5b87fb10-06b9-4a8b-a3af-90c991a1424b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:20:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:21:00"}
{"durationMs":40.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"59c6d7da-0f61-4f81-b523-48638ca4a82b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:21:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":49.2,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"09163d53-bf0a-4ccf-9c4e-060959c0cfaf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:21:32","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":381.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:21:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":395.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:21:33","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.17,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"163517f0-08d1-4260-b1bf-ae265ef0d3c8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:21:33","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:25:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02d56675-1e16-41f5-98aa-c97b1a73e203","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:28:00"}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","href":null,"navId":null,"text":null,"to":"/login"},"durationMs":null,"event":"NAV_PATH_CHANGE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route path change","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 22:28:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"data":{"from":"/guardian/student/cmp8gtpz200fy8bcnxg8120p8/fees","navId":null,"to":"/login"},"durationMs":null,"event":"NAV_RENDER","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT Route rendered","path":"/login","schoolId":null,"service":"cbc-sms","timestamp":"2026-08-23 22:28:14","userAgent":"Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Mobile Safari/537.36","userId":null}
{"durationMs":2.89,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"16640cd3-04ef-45f4-961a-14c634592bb2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:28:14","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:29:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:30:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:30:00","totalConnections":1}
{"durationMs":1.28,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eda3ae5f-1015-465b-b4ac-d7bd4f51de9e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:35:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"45a7a123-2eee-4ea6-8ec2-946677d6967a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:40:00","totalConnections":1}
{"durationMs":1.76,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6951882d-88a4-4962-90af-db2729505e48","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:44:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:45:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:45:00","totalConnections":1}
{"durationMs":1.91,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"05041e39-e18d-4051-b500-660e3cc78469","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:47:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:50:00","totalConnections":1}
{"durationMs":1.86,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1b00c5e9-1f76-4a94-bb05-e95858f19bd3","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:51:00"}
{"durationMs":1.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"02f0a705-df7e-45f4-a0cc-6c583fa3e07c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:51:56","userId":null}
{"durationMs":4.25,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"33670534-5e16-4762-b57e-7ed27fdba0a7","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:51:57","userId":null}
{"durationMs":3.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"c95977cb-6a98-4202-9d5a-5e110a733b53","schoolId":null,"service":"cbc-sms","status":401,"timestamp":"2026-08-23 22:51:57","userId":null}
{"durationMs":36.3,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/auth/refresh-token","requestId":"947e614c-f1f5-4725-8e30-8acd449bf5b6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:51:57","userId":null}
{"durationMs":89.83,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/school-info","requestId":"b92f4c40-6eb4-4384-9939-36fb20bff362","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":142.21,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/dashboard","requestId":"71bf74ac-f08f-4efa-afed-7ef35c0adb90","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":152.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/school/enabled-modules","requestId":"d4a0deaf-45b9-40a8-9976-b34ecdaedb08","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/guardian/dashboard"},"durationMs":341.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":401,"url":"/guardian/school-info"},"durationMs":863.4,"event":"API_ERROR","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API error","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:58","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.01,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d3622fb9-4400-4861-83e2-e06613114144","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":350.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"88a74f3d-941b-4ddb-b7d1-c709abbff7fd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":344.71,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"1f77195a-8b04-4975-9c39-92dacb021a32","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":337.55,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications","requestId":"6c3634ce-8429-4c80-b0c6-af55a35b567a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":471.22,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees","requestId":"f801e533-fa36-4b8d-bdc5-5661348bf013","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:58","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":43.76,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/guardian/payment-methods","requestId":"9c30bba5-fb0a-4aaf-bccb-3ef372b4c6e2","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:51:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/school-info"},"durationMs":452.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/dashboard"},"durationMs":555,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/school/enabled-modules"},"durationMs":516.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":732.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":760.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications"},"durationMs":761.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/guardian/children/cmp8gtpz200fy8bcnxg8120p8/fees"},"durationMs":880.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:51:59","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.38,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"af540462-515c-4358-992f-cf3ec652da8e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:51:59","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:52:00"}
{"data":{"method":"GET","status":200,"url":"/guardian/payment-methods"},"durationMs":440,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:52:00","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"2cd5958f-aa1b-463b-bd32-a24c82208a72","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:52:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":73.88,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5143c045-e3e5-4152-a674-9336cbc8fccd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:53:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":72.03,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6da4fce7-47e9-4c3e-a62e-5059a95b97ad","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:53:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:53:00"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1488.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:53:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1487.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:53:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.42,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"29c9ac30-0daf-48fc-98ab-6558a58f2d19","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:53:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:54:00"}
{"durationMs":64.28,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6ad84078-e0f8-4cff-a5c5-094a876345f0","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:54:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":75.57,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3f371657-b0b5-4b04-ad81-6d4a0d2aa5e5","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:54:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":389.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:54:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":412.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:54:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":12.39,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"d388e16c-a85a-4d53-ae8d-34e9e79245bd","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:54:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 22:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 22:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 22:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 22:55:00","totalConnections":1}
{"durationMs":57.63,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"b220c0e4-adff-4297-9ff6-96147e413c33","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:55:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":84.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"dfcf6658-a5ff-472d-bafc-84cce701ff51","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:55:00","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":388,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:55:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":411.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:55:01","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":17.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"237dc977-3795-46a6-bea3-e71de28a5500","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:55:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":2.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"1df9db23-fcfc-4be2-ab05-e4273a209943","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:56:00"}
{"durationMs":195.46,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"9e9d9fd2-02b0-466b-a015-c1a78cb5ef86","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:56:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":205.35,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3982d74f-2bde-4f35-a843-a0933fc6ac9d","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:56:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":527,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:56:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":528.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:56:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":10.65,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"0739cca5-3513-40e9-aa5a-2925880119fc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:56:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:57:00"}
{"durationMs":137.95,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"52e4b41d-d1e7-4804-b706-5d90109f65eb","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:57:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":139.97,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"6df87d3b-60e6-4fb2-99f7-9b3a8b5d6b2b","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:57:01","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":461.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:57:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":470.2,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:57:02","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":7.19,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"dd85b28a-5d76-4719-81f1-a85a0b04f491","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:57:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:58:00"}
{"durationMs":40.96,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"eeaa4d34-3ea6-4bf7-a222-dd51ddc1d5ca","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:58:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.48,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"ee565785-cd1d-45eb-aae1-df9a7ea7a16e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:58:02","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":1017.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:58:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":1051.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:58:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":5.98,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"3ae6ac0c-ed22-428e-b751-0c3044dadd68","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:58:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 22:59:00"}
{"durationMs":54.31,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"6038acd3-6b27-4dad-846a-d35aaae10658","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:59:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":86.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"00f683eb-cc3f-4342-bac9-50ecd9c69c65","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 22:59:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":377.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:59:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":409.5,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 22:59:04","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.79,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"512ac969-207f-4c40-98d0-28cc3d449f16","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 22:59:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:00:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"45631a0e-daff-4485-a60f-148a016b32f9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:00:02","userId":null}
{"durationMs":107.18,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"6ee1ba33-5893-4d94-858f-2a539cc9b2fc","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:00:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":117.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"14f81de0-3ff8-46aa-bb58-536ba1890dd4","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:00:03","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":437.3,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:00:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":438.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:00:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":13.73,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"97f57716-abfe-4144-8cac-6fefc5b987fe","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:00:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:01:00"}
{"durationMs":314.66,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"c641daac-8943-444f-8dfd-0b696849b8b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:01:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":313.23,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5c5b29e9-61d4-452f-93b0-d475c2909875","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:01:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":635.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:01:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":637.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:01:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":9.52,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"528ed2ac-2824-4260-bf4a-8cfccef085b8","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:01:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:02:00"}
{"durationMs":73.54,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"17e3cdf8-00a5-4b05-9fb7-9b7a2ec16201","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:02:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":66.14,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"5c0c67d4-be0e-449a-a5b2-0344dc7a8ecf","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:02:04","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":409.9,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:02:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":409.6,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:02:05","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.34,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"7c39fd3d-73bf-4149-9443-a7bf99f2aef3","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:02:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:03:00"}
{"durationMs":73.4,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"472ea430-4538-46e1-8ff3-e8d6ff072272","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:03:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":80.41,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"4f7abd48-c4e2-438d-b583-fae68b06904e","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:03:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":412.8,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:03:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":412.4,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:03:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":15.33,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"e6520e56-b718-45ce-92f7-5afe3f15ec5a","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:03:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:04:00"}
{"durationMs":255.1,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/unread-count","requestId":"0ac950ec-4e3f-4700-83f5-aad000feb4ae","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:04:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":261.36,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/v1/communication/notifications/inbox-count","requestId":"3a5c2a77-863e-4bc0-bac0-7c7509bebf69","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":304,"timestamp":"2026-08-23 23:04:05","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/unread-count"},"durationMs":582.1,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:04:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"data":{"method":"GET","status":200,"url":"/communication/notifications/inbox-count"},"durationMs":581.7,"event":"API_RESPONSE","ip":"102.0.11.44","level":"info","message":"CLIENT_EVENT API response","path":null,"schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","timestamp":"2026-08-23 23:04:06","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"durationMs":11.85,"ip":"102.0.11.44","level":"info","message":"HTTP_REQUEST","method":"POST","path":"/api/v1/client-logs","requestId":"ebb9815e-f89e-4870-b6cf-0fd65e28e115","schoolId":"cmp8gtb7j00008bcnd6vyf567","service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:04:06","userId":"bc68176f-9825-479f-879f-87e565a6b5ed"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:05:00","totalConnections":1}
{"durationMs":1.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"71ee958f-5a35-40f5-a8ef-fe1c5c2e7b7a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:10:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a11b6552-69fa-4f70-9e0d-b021eaff4861","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:15:00","totalConnections":1}
{"durationMs":1,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b13dc9b4-04ef-411d-827b-ca8f6eb88f19","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:20:00","totalConnections":1}
{"durationMs":1.68,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"00944b94-5537-40ef-87a7-bed8b9916c01","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:25:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cb8f5b57-b7a3-45b7-850b-c9aca9ba8eba","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:30:00","totalConnections":1}
{"durationMs":1.36,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fe3aadef-e6cb-4299-88ed-762f2483b9b6","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:35:00","totalConnections":1}
{"durationMs":2.39,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"7f7d557b-c007-468f-aae6-559f37a41f96","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:39:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:40:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:40:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"82c8c58b-bec7-4e08-9d96-b3b95e0e8b27","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:45:00","totalConnections":1}
{"durationMs":1.25,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fc0c8bdb-98d3-47f6-95b2-388edf9d45f5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:50:00","totalConnections":1}
{"durationMs":1.83,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cfa4e842-c278-4eae-b874-378f088a5374","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-23 23:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-23 23:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-23 23:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-23 23:55:00","totalConnections":1}
{"durationMs":1.51,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cec3d9b2-c5fb-4bc1-8d76-adf076722299","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-23 23:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-23 23:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:00:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dc295727-6e96-4ccd-adac-b19d6f656689","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:05:00","totalConnections":1}
{"durationMs":1.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"6aa9a6e3-bf38-4a05-8ce4-8f1446559237","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:10:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"26e27cdc-f2e5-4023-8277-d703af1a8455","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:15:00","totalConnections":1}
{"durationMs":1.2,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"77e6c306-f8af-4476-a76d-6df48f2e4ccd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:20:00","totalConnections":1}
{"durationMs":1.17,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a9e21759-4587-4e3b-8603-8e848ad9856f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:25:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"e69c8451-8a16-4056-b9f8-7dcc072e13f9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:30:00","totalConnections":1}
{"durationMs":1.92,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"936dd59b-0511-4e7b-8d4a-2575b8f183c9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:30:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:35:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"72b3553c-77c1-40a7-9f8b-455224e422c9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:40:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ec47e31f-45db-4773-acc9-23f981a8a3ce","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:45:00","totalConnections":1}
{"durationMs":1.14,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"22425077-3d07-4d25-9cb7-7fd06d9051c4","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:50:00","totalConnections":1}
{"durationMs":1.82,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab407cd3-bade-41a3-b549-488bdc68399e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 00:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 00:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 00:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 00:55:00","totalConnections":1}
{"durationMs":1.43,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8eefd808-babb-4807-8cc0-6e1139d92dca","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 00:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 00:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:00:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"f5836faa-7b60-4ce0-82c7-bab2931189a1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:04:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:05:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:05:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"c2af3f88-cc95-4bc7-804d-02653133a036","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:09:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:10:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:10:00","totalConnections":1}
{"durationMs":1.74,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"aae2fc2c-d55b-44b5-919c-f3153efa0f0d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:15:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff4040e6-4e2c-4c2b-ab9b-8566edef60c1","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:17:01"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:20:00","totalConnections":1}
{"durationMs":2.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"940226f5-ad05-4f83-8d62-ac8808c4d0e7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:24:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:25:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:25:00","totalConnections":1}
{"durationMs":1.32,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4d1cc021-b584-4dd2-b8ee-ee7fd126445c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:30:00","totalConnections":1}
{"durationMs":1.13,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"42cc79f8-a2fe-4913-a150-185924e648b9","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:34:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:35:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:35:00","totalConnections":1}
{"durationMs":1.21,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2440bbbf-dd7d-4723-b771-75741f0b0418","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:35:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:40:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab2da12d-041c-4e39-bb34-50dae2ed765e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:45:00","totalConnections":1}
{"durationMs":1.37,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"cfead660-e84b-41cd-8d8b-fd3633d86b7a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:50:00","totalConnections":1}
{"durationMs":1.42,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"2f73dbb1-bfa8-40d5-9ba6-614b088d042d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 01:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 01:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 01:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 01:55:00","totalConnections":1}
{"durationMs":1.85,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"95cd071b-2af4-4313-ad98-e98a42437e4d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 01:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 01:59:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:00:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:00:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a6e841f8-0a5e-4e40-a60f-a2d25f630cfa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:05:00","totalConnections":1}
{"durationMs":1.12,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"37d00476-ee14-4d2e-84ef-f5bcbbf0b923","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:10:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"0abed3fd-9f6d-4cdd-8d64-2cff55aeb5b2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:15:00","totalConnections":1}
{"durationMs":1.59,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"dcee1bfb-213f-4ae0-85bd-46c2089ad0db","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:15:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:20:00","totalConnections":1}
{"durationMs":1.33,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"fdb43d0a-932b-459f-9004-e8855d09af33","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:25:00","totalConnections":1}
{"durationMs":1.15,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"032bd90e-f93d-440d-a542-dafb3728cec7","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:25:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:30:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"558cdfa7-775a-4ee6-a4f0-937ac373f5cd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:35:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"96f82774-98f2-4332-8322-d9c8e45decc5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:40:00","totalConnections":1}
{"durationMs":1.48,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a3461d09-5b26-49d3-a4a7-ea417305b2fa","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:40:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:45:00","totalConnections":1}
{"durationMs":1.71,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d8f178b7-836d-42f4-9532-c260e5de293f","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:45:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:50:00","totalConnections":1}
{"durationMs":2.46,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"45f72245-049d-46c8-ab70-2177d53baa9b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:50:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:54:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:55:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 02:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 02:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 02:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 02:55:00","totalConnections":1}
{"durationMs":1.63,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"de376e83-1297-4d97-b6b6-0e62145c4235","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 02:55:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 02:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:00:00","totalConnections":1}
{"durationMs":1.08,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3aa01f10-d0d2-4197-a3f6-9959db170903","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:00:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:05:00","totalConnections":1}
{"durationMs":1.3,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d7dba0df-6e4e-48a1-bf60-365d6089465e","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:05:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:10:00","totalConnections":1}
{"durationMs":1.41,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"938d34a3-4370-4ca9-a872-f1334cbdc065","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:10:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:15:00","totalConnections":1}
{"durationMs":1.07,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"29cad9ac-2ec8-4287-9465-06c30b368d00","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:20:00","totalConnections":1}
{"durationMs":1.26,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"8a6895cc-ba49-4fd3-8f33-cd8767066529","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:25:00","totalConnections":1}
{"durationMs":2.02,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ff34342c-5bd4-461d-bc34-668092b4c8d5","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:27:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:28:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:29:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:30:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:30:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:30:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:30:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:30:00","totalConnections":1}
{"durationMs":1.38,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"9d67d994-61ed-407b-a5a3-f259cb33929b","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:30:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:31:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:32:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:33:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:34:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:35:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:35:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:35:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:35:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:35:00","totalConnections":1}
{"durationMs":1.09,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"68bc6d39-8072-4fb7-b111-a7beff31fa81","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:35:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:36:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:37:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:38:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:39:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:40:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:40:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:40:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:40:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:40:00","totalConnections":1}
{"durationMs":1.06,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"3deadf62-9fd5-4cda-8528-ce30966a1d47","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:40:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:41:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:42:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:43:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:44:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:45:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:45:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:45:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:45:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:45:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"a265e880-c71f-49f3-aadc-ca71f0f70864","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:45:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:46:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:47:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:48:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:49:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:50:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:50:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:50:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:50:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:50:00","totalConnections":1}
{"durationMs":1.19,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"5e0a62c7-3134-4ec1-a8de-15563e552d4c","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:50:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:51:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:52:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:53:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:54:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 03:55:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 03:55:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:55:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 03:55:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 03:55:00","totalConnections":1}
{"durationMs":1.57,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"4359d9f4-2b2a-4e16-9242-f90fb802b045","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 03:55:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:56:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:57:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:58:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 03:59:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:00:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:00:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:00:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:00:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:00:00","totalConnections":1}
{"durationMs":1.01,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"163beec3-0084-4d03-ae7f-4125b00ce0f2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:00:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:01:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:02:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:03:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:04:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:05:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:05:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:05:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:05:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:05:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"d0b4d43b-ee81-4508-b2be-f6f58dedd50d","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:05:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:06:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:07:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:08:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:09:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:10:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:10:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:10:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:10:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:10:00","totalConnections":1}
{"durationMs":1.66,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"ab36cccd-4e9a-45b2-a9de-d2fa392445bd","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:10:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:11:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:12:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:13:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:14:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:15:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:15:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:15:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:15:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:15:00","totalConnections":1}
{"durationMs":1.98,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"36cb1b6e-a217-48bc-8d3d-e8f66c5b026a","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:15:01","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:16:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:17:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:18:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:19:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:20:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:20:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:20:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:20:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:20:00","totalConnections":1}
{"durationMs":1.65,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"b6de15a2-8fc2-41ae-8a7b-ede1a4c505e2","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:20:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:21:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:22:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:23:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:24:00"}
{"level":"info","message":"Integration sync cron job triggered","service":"cbc-sms","timestamp":"2026-08-24 04:25:00"}
{"level":"info","message":"Starting scheduled integration sync job","service":"cbc-sms","timestamp":"2026-08-24 04:25:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:25:00"}
{"level":"info","message":"Found 1 active API_PULL connections","service":"cbc-sms","timestamp":"2026-08-24 04:25:00"}
{"level":"info","message":"Scheduled integration sync job completed","service":"cbc-sms","successCount":0,"syncedCount":0,"timestamp":"2026-08-24 04:25:00","totalConnections":1}
{"durationMs":1.04,"ip":"127.0.0.1","level":"info","message":"HTTP_REQUEST","method":"GET","path":"/api/health","requestId":"eeca1e75-d7be-401b-a3e4-045b95046395","schoolId":null,"service":"cbc-sms","status":200,"timestamp":"2026-08-24 04:25:02","userId":null}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:26:00"}
{"level":"info","message":"[ScheduledMessages] No messages due for delivery","service":"cbc-sms","timestamp":"2026-08-24 04:27:00"}
