Application Logs staging-log-20260810.txt 200 entries
All ERR WRN INF DBG
Activity 200
2026-08-10 20:11:31.020 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/forgot-password responded 200 in 4.9592 ms
2026-08-10 20:11:31.020 +00:00 [INF] [HTTP] [U:-] [E:-] [C:4e7d9f0b1310] HTTP GET /UI/business/forgot-password 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Forgot Password - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Forgot Password</h4> <p class="text-muted small mb-4">Enter your email and we'll send you a reset link.</p> <div id="error-msg" class="alert alert-danger d-none" role="alert"></div> <div id="success-msg" class="alert alert-success d-none" role="alert"></div> <form id="forgot-form" novalidate> <div class="mb-4"> <label for="email" class="form-label">Email</label> <input type="email" class="form-control" id="email" placeholder="you@example.com" required autofocus /> </div> <button type="submit" class="btn btn-primary w-100" id="submit-btn"> Send Reset Link </button> </form> <div class="mt-3 text-center"> <a href="/UI/business/login" class="small text-decoration-none">← Back to Sign In</a> </div> </div> </div> <script> document.getElementById('forgot-form').addEventListener('submit', async (e) => { e.preventDefault(); const email = document.getElementById('email').value.trim(); const errorMsg = document.getElementById('error-msg'); const successMsg = document.getElementById('success-msg'); const submitBtn = document.getElementById('submit-btn'); const form = document.getElementById('forgot-form'); errorMsg.classList.add('d-none'); errorMsg.textContent = ''; successMsg.classList.add('d-none'); submitBtn.disabled = true; submitBtn.textContent = 'Sending…'; try { const res = await fetch('/api/auth/forgot-password', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email }) }); if (res.ok || res.status === 404) { // Absorb 404 to prevent user enumeration — always show generic message form.classList.add('d-none'); successMsg.textContent = 'If an account with that email exists, a reset link has been sent. Check your inbox.'; successMsg.classList.remove('d-none'); } else { const result = await res.json().catch(() => ({})); const message = result.message || result.error?.message || 'Something went wrong. Please try again.'; errorMsg.textContent = message; errorMsg.classList.remove('d-none'); submitBtn.disabled = false; submitBtn.textContent = 'Send Reset Link'; } } catch { errorMsg.textContent = 'Unable to reach the server. Please try again.'; errorMsg.classList.remove('d-none'); submitBtn.disabled = false; submitBtn.textContent = 'Send Reset Link'; } }); </script> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> </body> </html>
2026-08-10 20:11:30.404 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /robots.txt responded 401 in 0.6345 ms
2026-08-10 19:10:59.993 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/dashboard/overview responded 200 in 16.5698 ms
2026-08-10 19:10:59.993 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:14aaeaae6871] HTTP GET /api/v1/business/dashboard/overview 200
Req: [no body] Res: {"success":true,"data":{"stats":{"totalCases":{"count":271,"trendPercent":25.8},"totalClients":{"count":150,"trendPercent":-27.6},"totalUsers":{"count":115,"trendPercent":242.3},"totalBranches":{"count":10,"trendPercent":133.3},"totalArCompanies":{"count":4,"trendPercent":0},"totalCommission":{"amount":2400.00,"trendPercent":null}},"casesByStatus":[{"name":"Cancelled","count":2},{"name":"Contracts Exchanged","count":1},{"name":"Declined","count":1},{"name":"Deferred","count":1},{"name":"Lapsed","count":1},{"name":"Live","count":16},{"name":"Matured","count":3},{"name":"NTU","count":3},{"name":"New Case","count":229},{"name":"Pending","count":3},{"name":"Pre Offer Processing","count":1},{"name":"Remortgage","count":4},{"name":"Underwriting","count":3},{"name":"Valuation Received Approved","count":3}],"casesOverTime":{"months":["2026-03","2026-04","2026-05","2026-06","2026-07","2026-08"],"series":[{"productType":"PersonalProtection","counts":[0,0,0,24,72,27]},{"productType":"BusinessProtection","counts":[0,0,0,9,18,8]},{"productType":"GeneralInsurance","counts":[0,0,0,5,12,5]},{"productType":"PrivateMedicalInsurance","counts":[0,0,0,1,11,6]},{"productType":"Mortgages","counts":[0,0,0,3,62,8]}]},"usersByApplicationStatus":[{"name":"Rejected","count":1},{"name":"OnboardingReview","count":2},{"name":"Initiated","count":21},{"name":"InProgress","count":9},{"name":"Approved","count":81}],"recentCases":[{"id":339,"userFacingCaseId":"CASE-0271","clientName":"Thanos Legend","statusName":"New Case","createdAt":"2026-08-10T14:36:37.691703Z"},{"id":338,"userFacingCaseId":"CASE-0270","clientName":"Thanos Legend","statusName":"New Case","createdAt":"2026-08-10T14:13:48.935135Z"},{"id":337,"userFacingCaseId":"CASE-0269","clientName":"Prajwal Pal Singh","statusName":"New Case","createdAt":"2026-08-10T13:52:30.902751Z"},{"id":336,"userFacingCaseId":"CASE-0268","clientName":"Monika Shaw","statusName":"New Case","createdAt":"2026-08-10T12:48:16.582476Z"},{"id":334,"userFacingCaseId":"CASE-0267","clientName":"Living Stone","statusName":"New Case","createdAt":"2026-08-07T11:57:58.871924Z"}],"recentClients":[{"id":203,"fullName":"Monika Shaw","email":"rajarao+mrs@wealthmax.io.uk","source":"Events","status":"Interested","createdAt":"2026-08-10T11:06:01.629716Z"},{"id":202,"fullName":"Gagan Gagan","email":"gagan.deep+5556666@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-06T07:59:19.78937Z"},{"id":201,"fullName":"Gagan Gagan","email":"gagan.deep+1066@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-05T12:01:08.606974Z"},{"id":200,"fullName":"Thanos Legend","email":"Thanos@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-05T11:44:51.790118Z"},{"id":199,"fullName":"Monalisa Eva","email":"rajarao+1mons1@wealthmax.co.uk","source":"Website","status":"Engaging","createdAt":"2026-08-05T11:02:26.474189Z"}],"branches":[{"id":5,"name":"Wealthmax Financial Advisers Ltd.","city":"BRENTFORD","userCount":73,"isHq":true,"isActive":true},{"id":16,"name":"BRANCH TESTING","city":"BRENTFORD","userCount":12,"isHq":false,"isActive":true},{"id":17,"name":"JP Morgan","city":"BRENTFORD","userCount":10,"isHq":false,"isActive":true},{"id":7,"name":"Tetsing Branch","city":"BRENTFORD","userCount":8,"isHq":false,"isActive":true},{"id":13,"name":"Testing Branch","city":"BRENTFORD","userCount":6,"isHq":false,"isActive":true}],"arCompanies":[{"id":12,"name":"AR1","code":"AR-0004","branchName":"Wealthmax Financial Advisers Ltd.","isActive":true},{"id":10,"name":"TESTINNG ARR","code":"AR-0003","branchName":"BRANCH TESTING","isActive":true},{"id":2,"name":"YYYYY","code":"AR-0002","branchName":"Wealthmax Financial Advisers Ltd.","isActive":true},{"id":1,"name":"Gagan","code":"AR-0001","branchName":"Wealthmax Financial Advisers Ltd.","isActive":false}]},"timestamp":"2026-08-10T19:10:59.9931015Z"}
2026-08-10 19:10:59.977 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/dashboard/stats responded 200 in 6.8809 ms
2026-08-10 19:10:59.977 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:3a7b59c9a9ef] HTTP GET /api/v1/business/dashboard/stats 200
Req: [no body] Res: {"success":true,"data":{"totalClients":150,"casesByProductType":[{"productType":"PersonalProtection","count":123},{"productType":"GeneralInsurance","count":22},{"productType":"PrivateMedicalInsurance","count":18},{"productType":"Mortgages","count":73},{"productType":"BusinessProtection","count":35}],"usersByStatus":[{"status":"Rejected","count":1},{"status":"OnboardingReview","count":2},{"status":"Initiated","count":21},{"status":"InProgress","count":9},{"status":"Approved","count":81}],"usersByDesignation":[{"designation":"Administrator","count":1},{"designation":"Branch Admin","count":16},{"designation":"Compliance Head","count":6},{"designation":"Director","count":14},{"designation":"Mortgage Adviser","count":7},{"designation":"Mortgage Compliance Officer","count":4},{"designation":"Mortgage Manager","count":7},{"designation":"Onboarding Admin","count":13},{"designation":"Principal AR","count":12},{"designation":"Professional Introducer","count":9},{"designation":"Protection & Mortgage Adviser","count":9},{"designation":"Protection Adviser","count":5},{"designation":"Protection Compliance Officer","count":5},{"designation":"Protection Manager","count":7}]},"timestamp":"2026-08-10T19:10:59.9775091Z"}
2026-08-10 19:10:57.221 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 4.7563 ms
2026-08-10 19:10:57.221 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:de5939cccc6c] HTTP GET /api/v1/business/product-catalog/providers 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":129,"name":"Aviva","logo":null,"source":"IPipeline","externalId":"nuc","isActive":true,"productCount":15,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":139,"name":"Beagle Street","logo":null,"source":"IPipeline","externalId":"beaglest","isActive":true,"productCount":2,"createdAt":"2026-07-10T09:26:58.253233Z"},{"id":121,"name":"British Friendly","logo":null,"source":"IPipeline","externalId":"britfriend","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":122,"name":"Cirencester Friendly","logo":null,"source":"IPipeline","externalId":"cirenfr","isActive":true,"productCount":2,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":137,"name":"Gagan","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-23T09:28:03.98139Z"},{"id":138,"name":"Gagan Test","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-23T09:30:02.696935Z"},{"id":124,"name":"Guardian","logo":null,"source":"IPipeline","externalId":"gryphon","isActive":true,"productCount":10,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":125,"name":"Holloway Friendly","logo":null,"source":"IPipeline","externalId":"holloway","isActive":true,"productCount":6,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":130,"name":"LV=","logo":null,"source":"IPipeline","externalId":"permins","isActive":false,"productCount":24,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":126,"name":"Legal & General","logo":null,"source":"IPipeline","externalId":"legal","isActive":true,"productCount":50,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":136,"name":"Manual Provider","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-22T12:40:46.0954Z"},{"id":127,"name":"MetLife","logo":null,"source":"IPipeline","externalId":"metlife","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":128,"name":"National Friendly","logo":null,"source":"IPipeline","externalId":"natfriend","isActive":true,"productCount":12,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":132,"name":"Royal London","logo":null,"source":"IPipeline","externalId":"roylondon","isActive":true,"productCount":18,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":133,"name":"Scottish Widows","logo":null,"source":"IPipeline","externalId":"scotwid","isActive":true,"productCount":6,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":134,"name":"Shepherds Friendly","logo":null,"source":"IPipeline","externalId":"shepfr","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":123,"name":"The Exeter","logo":null,"source":"IPipeline","externalId":"exfamfri","isActive":true,"productCount":8,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":131,"name":"VitalityLife","logo":null,"source":"IPipeline","externalId":"pruprotect","isActive":true,"productCount":58,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":135,"name":"Zurich","logo":null,"source":"IPipeline","externalId":"zifa","isActive":true,"productCount":25,"createdAt":"2026-06-20T09:00:37.305301Z"}],"pagination":{"page":0,"size":20,"totalElements":19,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-08-10T19:10:57.2210755Z"}
2026-08-10 19:10:56.891 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326 responded 200 in 30.6747 ms
2026-08-10 19:10:56.891 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e13925e8ff3c] HTTP GET /api/v1/business/cases/326 200
Req: [no body] Res: {"success":true,"data":{"id":326,"userFacingCaseId":"CASE-0259","productType":"Personal Protection","productTypeDisplayName":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":369,"clientId":172,"clientName":"Kamran Ali","factFindId":369}],"assignedUserId":656,"assignedUserName":"Anmol Kaur Bhatti","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"tenantId":28,"createdBy":"656","createdAt":"2026-08-06T11:25:32.697837Z","updatedBy":"656","updatedAt":"2026-08-10T19:10:51.190073Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-06T11:25:41.045454Z"},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-06T11:25:33.131608Z"},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-06T11:26:29.495852Z"},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-06T11:26:31.523898Z"},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-06T11:26:32.873122Z"},{"order":6,"sectionType":"Life Style","status":"Complete","completedAt":"2026-08-06T11:26:34.398721Z"},{"order":7,"sectionType":"Health","status":"Complete","completedAt":"2026-08-06T11:26:35.675999Z"},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-06T11:26:38.384723Z"},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-06T11:26:41.090008Z"}],"productType":{"name":"Personal Protection","productNames":[{"name":"Income Protection","status":"In Progress","completedAt":null}]},"sourcing":"Personal Protection","sourcingSection":[{"order":1,"sectionType":"Existing & Replacement Policies","status":"Complete","completedAt":"2026-08-06T11:26:45.317986Z"},{"order":2,"sectionType":"Needs & Preferences","status":"Complete","completedAt":null},{"order":3,"sectionType":"Products","status":"Not Started","completedAt":null},{"order":4,"sectionType":"Personal Protection Recommendation","status":"Not Started","completedAt":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null}]}}},"timestamp":"2026-08-10T19:10:56.8913801Z"}
2026-08-10 19:10:56.889 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 5.2386 ms
2026-08-10 19:10:56.889 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e52c1e36ae99] HTTP GET /api/v1/business/product-catalog/providers 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":129,"name":"Aviva","logo":null,"source":"IPipeline","externalId":"nuc","isActive":true,"productCount":15,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":139,"name":"Beagle Street","logo":null,"source":"IPipeline","externalId":"beaglest","isActive":true,"productCount":2,"createdAt":"2026-07-10T09:26:58.253233Z"},{"id":121,"name":"British Friendly","logo":null,"source":"IPipeline","externalId":"britfriend","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":122,"name":"Cirencester Friendly","logo":null,"source":"IPipeline","externalId":"cirenfr","isActive":true,"productCount":2,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":137,"name":"Gagan","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-23T09:28:03.98139Z"},{"id":138,"name":"Gagan Test","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-23T09:30:02.696935Z"},{"id":124,"name":"Guardian","logo":null,"source":"IPipeline","externalId":"gryphon","isActive":true,"productCount":10,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":125,"name":"Holloway Friendly","logo":null,"source":"IPipeline","externalId":"holloway","isActive":true,"productCount":6,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":130,"name":"LV=","logo":null,"source":"IPipeline","externalId":"permins","isActive":false,"productCount":24,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":126,"name":"Legal & General","logo":null,"source":"IPipeline","externalId":"legal","isActive":true,"productCount":50,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":136,"name":"Manual Provider","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-06-22T12:40:46.0954Z"},{"id":127,"name":"MetLife","logo":null,"source":"IPipeline","externalId":"metlife","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":128,"name":"National Friendly","logo":null,"source":"IPipeline","externalId":"natfriend","isActive":true,"productCount":12,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":132,"name":"Royal London","logo":null,"source":"IPipeline","externalId":"roylondon","isActive":true,"productCount":18,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":133,"name":"Scottish Widows","logo":null,"source":"IPipeline","externalId":"scotwid","isActive":true,"productCount":6,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":134,"name":"Shepherds Friendly","logo":null,"source":"IPipeline","externalId":"shepfr","isActive":true,"productCount":3,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":123,"name":"The Exeter","logo":null,"source":"IPipeline","externalId":"exfamfri","isActive":true,"productCount":8,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":131,"name":"VitalityLife","logo":null,"source":"IPipeline","externalId":"pruprotect","isActive":true,"productCount":58,"createdAt":"2026-06-20T09:00:37.305301Z"},{"id":135,"name":"Zurich","logo":null,"source":"IPipeline","externalId":"zifa","isActive":true,"productCount":25,"createdAt":"2026-06-20T09:00:37.305301Z"}],"pagination":{"page":0,"size":20,"totalElements":19,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-08-10T19:10:56.889186Z"}
2026-08-10 19:10:56.873 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/solution-builder/cases/326/quotes responded 200 in 4.4632 ms
2026-08-10 19:10:56.873 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1efbe92790e5] HTTP GET /api/v1/business/solution-builder/cases/326/quotes 200
Req: [no body] Res: {"success":true,"data":{"caseId":326,"sbClientId":0,"events":[]},"timestamp":"2026-08-10T19:10:56.8730481Z"}
2026-08-10 19:10:56.868 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326/notes/summary responded 200 in 12.3863 ms
2026-08-10 19:10:56.867 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7a9bd423bb77] HTTP GET /api/v1/business/cases/326/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-08-10T19:10:56.8673386Z"}
2026-08-10 19:10:51.948 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/sourcing/cases/326/needs-preferences/income-protection/22 responded 200 in 38.2535 ms
2026-08-10 19:10:51.948 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7eb00a3809d0] HTTP GET /api/v1/business/sourcing/cases/326/needs-preferences/income-protection/22 200
Req: [no body] Res: {"success":true,"data":{"id":22,"caseClientId":369,"isJoint":false,"areNeedsAlreadyMetByExistingPolicies":false,"deferralPeriod":"OneMonth","benefitType":"Maximum","monthlyCoverAmount":null,"reasonForCover":"zsfdhgn","termYears":null,"toAgeYears":68,"reasonForTermLength":"dxfghjgfdsg","premiumType":"Reviewable","indexation":"Level","createdAt":"2026-08-06T11:27:03.630913Z","updatedAt":"2026-08-06T11:30:33.902194Z"},"timestamp":"2026-08-10T19:10:51.9414428Z"}
2026-08-10 19:10:51.584 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/sourcing/cases/326/needs-preferences responded 200 in 53.5500 ms
2026-08-10 19:10:51.584 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:9540ab35da75] HTTP GET /api/v1/business/sourcing/cases/326/needs-preferences 200
Req: [no body] Res: {"success":true,"data":{"id":77,"caseId":326,"objectivesAndCircumstances":"dfgkj","lifeAndCriticalIllnessRequired":false,"familyIncomeBenefitRequired":false,"incomeProtectionRequired":true,"wholeOfLifeRequired":false,"lifeCriticalIllnessRequirements":[],"familyIncomeBenefitRequirements":[],"incomeProtectionRequirements":[{"id":22,"caseClientId":369,"clientName":"Kamran Ali"}],"wholeOfLifeRequirements":[],"createdAt":"2026-08-06T11:27:06.252651Z","updatedAt":null},"timestamp":"2026-08-10T19:10:51.5803476Z"}
2026-08-10 19:10:51.537 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/fact-finds/clients/369/personal-details responded 200 in 7.5860 ms
2026-08-10 19:10:51.537 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:cf023a68a4e4] HTTP GET /api/v1/business/fact-finds/clients/369/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":245,"factFindId":369,"title":"Mr","firstName":"Kamran","lastName":"Ali","email":"Kamranali@gmail.com","mobilePhone":"+44 5566778899","middleName":null,"dateOfBirth":"1971-03-05","countryOfBirth":null,"nationality":"Pakistani","maritalStatus":"Married","gender":"Male","anticipatedRetirementAge":70,"anticipatedEmploymentChange":false,"isSmoker":true,"lastSmokedYears":2,"lastSmokedMonths":0,"hasWill":false,"lastWillReviewedYears":null,"lastWillReviewedMonths":null,"niNumber":null,"passportNo":null,"passportCountry":null,"passportValidFrom":null,"passportValidTo":null,"visaType":null,"visaValidFrom":null,"visaValidityDate":null,"isUkResidentForTaxPurposes":null,"isSeekingAsylum":null,"hasRefugeeStatus":null,"hasIndefiniteLeaveToRemain":null,"hasBeenUkResidentMoreThanOneYear":null,"hasBeenKnownByOtherNames":null,"holdsDrivingLicence":null,"drivingLicenceNumber":null,"drivingLicenceIssueDate":null,"drivingLicenceExpiryDate":null,"marketingEmail":null,"marketingText":null,"marketingPhone":null,"marketingMail":null,"createdAt":"2026-07-23T12:44:27.160185Z","updatedAt":null},"timestamp":"2026-08-10T19:10:51.5367719Z"}
2026-08-10 19:10:51.201 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326 responded 200 in 38.6299 ms
2026-08-10 19:10:51.201 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:bd5b38ffa53a] HTTP GET /api/v1/business/cases/326 200
Req: [no body] Res: {"success":true,"data":{"id":326,"userFacingCaseId":"CASE-0259","productType":"Personal Protection","productTypeDisplayName":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":369,"clientId":172,"clientName":"Kamran Ali","factFindId":369}],"assignedUserId":656,"assignedUserName":"Anmol Kaur Bhatti","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"tenantId":28,"createdBy":"656","createdAt":"2026-08-06T11:25:32.697837Z","updatedBy":"656","updatedAt":"2026-08-10T19:10:49.387367Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-06T11:25:41.045454Z"},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-06T11:25:33.131608Z"},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-06T11:26:29.495852Z"},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-06T11:26:31.523898Z"},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-06T11:26:32.873122Z"},{"order":6,"sectionType":"Life Style","status":"Complete","completedAt":"2026-08-06T11:26:34.398721Z"},{"order":7,"sectionType":"Health","status":"Complete","completedAt":"2026-08-06T11:26:35.675999Z"},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-06T11:26:38.384723Z"},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-06T11:26:41.090008Z"}],"productType":{"name":"Personal Protection","productNames":[{"name":"Income Protection","status":"In Progress","completedAt":null}]},"sourcing":"Personal Protection","sourcingSection":[{"order":1,"sectionType":"Existing & Replacement Policies","status":"Complete","completedAt":"2026-08-06T11:26:45.317986Z"},{"order":2,"sectionType":"Needs & Preferences","status":"Complete","completedAt":null},{"order":3,"sectionType":"Products","status":"Not Started","completedAt":null},{"order":4,"sectionType":"Personal Protection Recommendation","status":"Not Started","completedAt":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null}]}}},"timestamp":"2026-08-10T19:10:51.2011243Z"}
2026-08-10 19:10:51.184 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326/notes/summary responded 200 in 22.2504 ms
2026-08-10 19:10:51.184 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:26da1ea5dd1b] HTTP GET /api/v1/business/cases/326/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-08-10T19:10:51.1838738Z"}
2026-08-10 19:10:49.397 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326 responded 200 in 32.0028 ms
2026-08-10 19:10:49.397 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ad5f6f1c3691] HTTP GET /api/v1/business/cases/326 200
Req: [no body] Res: {"success":true,"data":{"id":326,"userFacingCaseId":"CASE-0259","productType":"Personal Protection","productTypeDisplayName":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":369,"clientId":172,"clientName":"Kamran Ali","factFindId":369}],"assignedUserId":656,"assignedUserName":"Anmol Kaur Bhatti","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"tenantId":28,"createdBy":"656","createdAt":"2026-08-06T11:25:32.697837Z","updatedBy":"656","updatedAt":"2026-08-10T19:10:47.66689Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-06T11:25:41.045454Z"},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-06T11:25:33.131608Z"},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-06T11:26:29.495852Z"},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-06T11:26:31.523898Z"},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-06T11:26:32.873122Z"},{"order":6,"sectionType":"Life Style","status":"Complete","completedAt":"2026-08-06T11:26:34.398721Z"},{"order":7,"sectionType":"Health","status":"Complete","completedAt":"2026-08-06T11:26:35.675999Z"},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-06T11:26:38.384723Z"},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-06T11:26:41.090008Z"}],"productType":{"name":"Personal Protection","productNames":[{"name":"Income Protection","status":"In Progress","completedAt":null}]},"sourcing":"Personal Protection","sourcingSection":[{"order":1,"sectionType":"Existing & Replacement Policies","status":"Complete","completedAt":"2026-08-06T11:26:45.317986Z"},{"order":2,"sectionType":"Needs & Preferences","status":"Complete","completedAt":null},{"order":3,"sectionType":"Products","status":"Not Started","completedAt":null},{"order":4,"sectionType":"Personal Protection Recommendation","status":"Not Started","completedAt":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null}]}}},"timestamp":"2026-08-10T19:10:49.3975518Z"}
2026-08-10 19:10:49.378 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326/notes/summary responded 200 in 11.6274 ms
2026-08-10 19:10:49.378 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f7247e168dfb] HTTP GET /api/v1/business/cases/326/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-08-10T19:10:49.3782441Z"}
2026-08-10 19:10:49.374 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/sourcing/cases/326/existing-replacement-policies responded 200 in 8.7035 ms
2026-08-10 19:10:49.374 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:577197385314] HTTP GET /api/v1/business/sourcing/cases/326/existing-replacement-policies 200
Req: [no body] Res: {"success":true,"data":{"id":65,"caseId":326,"hasExistingPolicies":false,"hasEmployeeBenefits":false,"existingPolicies":[],"employeeBenefits":[],"createdAt":"2026-08-06T11:26:45.316635Z","updatedAt":"2026-08-06T11:26:45.317986Z"},"timestamp":"2026-08-10T19:10:49.3745771Z"}
2026-08-10 19:10:47.681 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326 responded 200 in 41.3791 ms
2026-08-10 19:10:47.681 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:6231614f468b] HTTP GET /api/v1/business/cases/326 200
Req: [no body] Res: {"success":true,"data":{"id":326,"userFacingCaseId":"CASE-0259","productType":"Personal Protection","productTypeDisplayName":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":369,"clientId":172,"clientName":"Kamran Ali","factFindId":369}],"assignedUserId":656,"assignedUserName":"Anmol Kaur Bhatti","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"tenantId":28,"createdBy":"656","createdAt":"2026-08-06T11:25:32.697837Z","updatedBy":"656","updatedAt":"2026-08-07T07:21:35.096322Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-06T11:25:41.045454Z"},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-06T11:25:33.131608Z"},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-06T11:26:29.495852Z"},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-06T11:26:31.523898Z"},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-06T11:26:32.873122Z"},{"order":6,"sectionType":"Life Style","status":"Complete","completedAt":"2026-08-06T11:26:34.398721Z"},{"order":7,"sectionType":"Health","status":"Complete","completedAt":"2026-08-06T11:26:35.675999Z"},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-06T11:26:38.384723Z"},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-06T11:26:41.090008Z"}],"productType":{"name":"Personal Protection","productNames":[{"name":"Income Protection","status":"In Progress","completedAt":null}]},"sourcing":"Personal Protection","sourcingSection":[{"order":1,"sectionType":"Existing & Replacement Policies","status":"Complete","completedAt":"2026-08-06T11:26:45.317986Z"},{"order":2,"sectionType":"Needs & Preferences","status":"Complete","completedAt":null},{"order":3,"sectionType":"Products","status":"Not Started","completedAt":null},{"order":4,"sectionType":"Personal Protection Recommendation","status":"Not Started","completedAt":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null}]}}},"timestamp":"2026-08-10T19:10:47.680249Z"}
2026-08-10 19:10:47.655 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/326/notes/summary responded 200 in 14.2482 ms
2026-08-10 19:10:47.655 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:12dd4586696f] HTTP GET /api/v1/business/cases/326/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-08-10T19:10:47.655083Z"}
2026-08-10 19:10:36.051 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/my responded 200 in 14.5911 ms
2026-08-10 19:10:36.051 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d30507d3bcd1] HTTP GET /api/v1/business/cases/my 200
Req: [no body] Res: {"success":true,"data":{"cases":{"content":[{"id":337,"userFacingCaseId":"CASE-0269","productType":"Private Medical Insurance","productNames":["PMI - Personal"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":76,"clientName":"Prajwal Pal Singh","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-10T13:52:30.902751Z"},{"id":334,"userFacingCaseId":"CASE-0267","productType":"Mortgages","productNames":["Residential"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":53,"clientName":"Living Stone","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-07T11:57:58.871924Z"},{"id":328,"userFacingCaseId":"CASE-0261","productType":"Private Medical Insurance","productNames":["PMI - Personal"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:37:37.941103Z"},{"id":327,"userFacingCaseId":"CASE-0260","productType":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":94,"clientName":"Ash Ash","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:33:15.005766Z"},{"id":326,"userFacingCaseId":"CASE-0259","productType":"Personal Protection","productNames":["Income Protection"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":172,"clientName":"Kamran Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:25:32.697837Z"},{"id":325,"userFacingCaseId":"CASE-0258","productType":"Personal Protection","productNames":["Accidental Cover"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:21:45.026781Z"},{"id":324,"userFacingCaseId":"CASE-0257","productType":"Personal Protection","productNames":["Accidental Cover"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:19:45.56117Z"},{"id":323,"userFacingCaseId":"CASE-0256","productType":"Personal Protection","productNames":["Whole of Life"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T11:00:53.400288Z"},{"id":321,"userFacingCaseId":"CASE-0254","productType":"General Insurance","productNames":["Building Insurance"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T09:47:46.333882Z"},{"id":320,"userFacingCaseId":"CASE-0253","productType":"Private Medical Insurance","productNames":["PMI - Personal"],"caseStatusId":595,"caseStatusName":"New Case","stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"isLocked":false,"createdAt":"2026-08-06T09:41:55.165711Z"}],"pagination":{"page":0,"size":10,"totalElements":212,"totalPages":22,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}}},"timestamp":"2026-08-10T19:10:36.050625Z"}
2026-08-10 19:10:36.040 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/cases/introducer-candidates responded 200 in 4.8842 ms
2026-08-10 19:10:36.040 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1cb30cbf035a] HTTP GET /api/v1/business/cases/introducer-candidates 200
Req: [no body] Res: {"success":true,"data":[{"id":658,"fullName":"Gagan Deep"},{"id":786,"fullName":"Gagan Deep"},{"id":804,"fullName":"Lindy Lee"},{"id":924,"fullName":"Professional Introducer User3"},{"id":925,"fullName":"Professional Introducer User4"},{"id":926,"fullName":"Professional Introducer User5"},{"id":927,"fullName":"Professional Introducer User6"},{"id":928,"fullName":"Professional Introducer User7"},{"id":929,"fullName":"Professional Introducer User8"}],"timestamp":"2026-08-10T19:10:36.0401189Z"}
2026-08-10 19:10:36.037 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/case-statuses responded 200 in 3.6197 ms
2026-08-10 19:10:36.037 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:85c1d2e599c7] HTTP GET /api/v1/business/case-statuses 200
Req: [no body] Res: {"success":true,"data":[{"id":595,"systemKey":"MortgageNewCase","name":"New Case","isDefault":true,"isActive":true,"sortOrder":10},{"id":596,"systemKey":"MortgageRemortgage","name":"Remortgage","isDefault":true,"isActive":true,"sortOrder":20},{"id":597,"systemKey":"MortgageMeeting","name":"Meeting","isDefault":true,"isActive":true,"sortOrder":30},{"id":598,"systemKey":"MortgageDip","name":"DIP","isDefault":true,"isActive":true,"sortOrder":40},{"id":599,"systemKey":"MortgagePreOfferProcessing","name":"Pre Offer Processing","isDefault":true,"isActive":true,"sortOrder":50},{"id":600,"systemKey":"MortgageValuationInstructed","name":"Valuation Instructed","isDefault":true,"isActive":true,"sortOrder":60},{"id":601,"systemKey":"MortgageValuationReceivedApproved","name":"Valuation Received Approved","isDefault":true,"isActive":true,"sortOrder":70},{"id":602,"systemKey":"MortgagePostOfferProcessing","name":"Post Offer Processing","isDefault":true,"isActive":true,"sortOrder":80},{"id":603,"systemKey":"MortgageContractsExchanged","name":"Contracts Exchanged","isDefault":true,"isActive":true,"sortOrder":90},{"id":604,"systemKey":"MortgageCompletedOffered","name":"Completed / Offered","isDefault":true,"isActive":true,"sortOrder":100},{"id":605,"systemKey":"MortgageInFlight","name":"In Flight","isDefault":true,"isActive":true,"sortOrder":110},{"id":606,"systemKey":"MortgageMarkAsNotProceeding","name":"Mark as Not Proceeding","isDefault":true,"isActive":true,"sortOrder":120},{"id":607,"systemKey":"ProtectionNewCase","name":"New Case","isDefault":true,"isActive":true,"sortOrder":125},{"id":608,"systemKey":"ProtectionPending","name":"Pending","isDefault":true,"isActive":true,"sortOrder":130},{"id":609,"systemKey":"ProtectionDeferred","name":"Deferred","isDefault":true,"isActive":true,"sortOrder":140},{"id":610,"systemKey":"ProtectionUnderwriting","name":"Underwriting","isDefault":true,"isActive":true,"sortOrder":150},{"id":611,"systemKey":"ProtectionCancelled","name":"Cancelled","isDefault":true,"isActive":true,"sortOrder":160},{"id":612,"systemKey":"ProtectionLapse","name":"Lapsed","isDefault":true,"isActive":true,"sortOrder":170},{"id":613,"systemKey":"ProtectionDeclined","name":"Declined","isDefault":true,"isActive":true,"sortOrder":180},{"id":614,"systemKey":"ProtectionLive","name":"Live","isDefault":true,"isActive":true,"sortOrder":190},{"id":615,"systemKey":"ProtectionMatured","name":"Matured","isDefault":true,"isActive":true,"sortOrder":200},{"id":616,"systemKey":"ProtectionNtus","name":"NTU","isDefault":true,"isActive":true,"sortOrder":210}],"timestamp":"2026-08-10T19:10:36.0375567Z"}
2026-08-10 19:10:33.773 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/businessusers responded 200 in 129.8480 ms
2026-08-10 19:10:33.773 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:a7d950dd4344] HTTP GET /api/v1/business/businessusers 200
Req: [no body] Res: {"success":true,"data":{"content":[{"userId":939,"userFacingId":"WFAL-SC-0115","email":"rajarao+1mons1@wealthmax.co.uk","firstName":"Monster","lastName":"App","fullName":"Monster App","mobileNumber":"+44 7768677888","applicationType":"Introducer","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-05T10:16:26.186017Z","submittedAt":"2026-08-05T10:49:40.928393Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":194,"departmentName":"Protection","designationId":387,"designationName":"Protection Manager","roleName":"Protection Sales Manager","roles":[{"role_id":416,"role_name":"Protection Sales Manager","system_role_key":"ProtectionSalesManager"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":938,"userFacingId":"WFAL-SC-0114","email":"rajarao+1af@wealthmax.co.uk","firstName":"August","lastName":"Fifth","fullName":"August Fifth","mobileNumber":"+44 6789678989","applicationType":"Registered Individual","userApplicationStatus":"Rejected","statusDisplayName":"Rejected","userOnboardingStep":"Submitted","isActive":false,"sanctionStatus":"No Match","createdAt":"2026-08-05T08:52:46.11031Z","submittedAt":"2026-08-05T09:45:02.478769Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":391,"designationName":"Protection & Mortgage Adviser","roleName":"Mortgage Adviser, Protection Adviser","roles":[{"role_id":419,"role_name":"Mortgage Adviser","system_role_key":"MortgageAdviser"},{"role_id":418,"role_name":"Protection Adviser","system_role_key":"ProtectionAdviser"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":937,"userFacingId":"WFAL-SC-0113","email":"arshreen.s@wealthmax.co.uk","firstName":"Arsh","lastName":"Singh","fullName":"Arsh Singh","mobileNumber":"+44 5555555555","applicationType":"Employee","userApplicationStatus":"In Progress","statusDisplayName":"In Progress","userOnboardingStep":"Sales Performance","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-05T07:23:46.026981Z","submittedAt":null,"companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":194,"departmentName":"Protection","designationId":387,"designationName":"Protection Manager","roleName":"Protection Adviser, Protection Sales Manager","roles":[{"role_id":418,"role_name":"Protection Adviser","system_role_key":"ProtectionAdviser"},{"role_id":416,"role_name":"Protection Sales Manager","system_role_key":"ProtectionSalesManager"}],"reportingManagerId":709,"reportingManagerName":"Max Well","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":932,"userFacingId":"WFAL-SC-0112","email":"gagan.deep+444333@wealthmax.co.uk","firstName":"Gagan","lastName":"Gagan","fullName":"Gagan Gagan","mobileNumber":"+44 4555555555","applicationType":"Employee","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T13:15:11.095516Z","submittedAt":"2026-08-10T11:37:29.267093Z","companyAssignmentType":"Self Company","branchId":35,"branchName":"CLEN","arId":null,"arName":null,"departmentId":191,"departmentName":"Sub Management","designationId":381,"designationName":"Branch Admin","roleName":"Branch Admin","roles":[{"role_id":408,"role_name":"Branch Admin","system_role_key":"BranchAdmin"}],"reportingManagerId":782,"reportingManagerName":"Jos Buttler","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":931,"userFacingId":"WFAL-SC-0111","email":"rajarao+1mort@wealthmax.co.uk","firstName":"Mort","lastName":"Gage","fullName":"Mort Gage","mobileNumber":"+44 8877788888","applicationType":"Registered Individual","userApplicationStatus":"In Progress","statusDisplayName":"In Progress","userOnboardingStep":"Financial Background","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T11:50:58.110705Z","submittedAt":null,"companyAssignmentType":"Self Company","branchId":31,"branchName":"Meta","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":391,"designationName":"Protection & Mortgage Adviser","roleName":"Mortgage Adviser, Protection Adviser","roles":[{"role_id":419,"role_name":"Mortgage Adviser","system_role_key":"MortgageAdviser"},{"role_id":418,"role_name":"Protection Adviser","system_role_key":"ProtectionAdviser"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":930,"userFacingId":"WFAL-SC-0110","email":"sakshi.dutta+34@wealthmax.co.uk","firstName":"Sakshi","lastName":"Test","fullName":"Sakshi Test","mobileNumber":"+44 7556321313","applicationType":"Employee","userApplicationStatus":"In Progress","statusDisplayName":"In Progress","userOnboardingStep":"Basic Details","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T11:50:40.982402Z","submittedAt":null,"companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":194,"departmentName":"Protection","designationId":387,"designationName":"Protection Manager","roleName":"Protection Adviser, Protection Sales Manager","roles":[{"role_id":418,"role_name":"Protection Adviser","system_role_key":"ProtectionAdviser"},{"role_id":416,"role_name":"Protection Sales Manager","system_role_key":"ProtectionSalesManager"}],"reportingManagerId":888,"reportingManagerName":"Director User3","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":929,"userFacingId":"WFAL-SC-0109","email":"sarthak.s+professionalintroducer8@wealthmax.co.uk","firstName":"Professional Introducer","lastName":"User8","fullName":"Professional Introducer User8","mobileNumber":"07700000000","applicationType":"Employee","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T07:24:01.817353Z","submittedAt":"2026-08-04T07:23:55.430263Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":392,"designationName":"Professional Introducer","roleName":"Introducer","roles":[{"role_id":420,"role_name":"Introducer","system_role_key":"Introducer"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":928,"userFacingId":"WFAL-SC-0108","email":"sarthak.s+professionalintroducer7@wealthmax.co.uk","firstName":"Professional Introducer","lastName":"User7","fullName":"Professional Introducer User7","mobileNumber":"07700000000","applicationType":"Employee","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T07:24:01.671877Z","submittedAt":"2026-08-04T07:23:55.430263Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":392,"designationName":"Professional Introducer","roleName":"Introducer","roles":[{"role_id":420,"role_name":"Introducer","system_role_key":"Introducer"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":927,"userFacingId":"WFAL-SC-0107","email":"sarthak.s+professionalintroducer6@wealthmax.co.uk","firstName":"Professional Introducer","lastName":"User6","fullName":"Professional Introducer User6","mobileNumber":"07700000000","applicationType":"Employee","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T07:24:01.504046Z","submittedAt":"2026-08-04T07:23:55.430263Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":392,"designationName":"Professional Introducer","roleName":"Introducer","roles":[{"role_id":420,"role_name":"Introducer","system_role_key":"Introducer"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":926,"userFacingId":"WFAL-SC-0106","email":"sarthak.s+professionalintroducer5@wealthmax.co.uk","firstName":"Professional Introducer","lastName":"User5","fullName":"Professional Introducer User5","mobileNumber":"07700000000","applicationType":"Employee","userApplicationStatus":"Approved","statusDisplayName":"Approved","userOnboardingStep":"Submitted","isActive":true,"sanctionStatus":"No Match","createdAt":"2026-08-04T07:24:01.329532Z","submittedAt":"2026-08-04T07:23:55.430263Z","companyAssignmentType":"Self Company","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":196,"departmentName":"Protection & Mortgage","designationId":392,"designationName":"Professional Introducer","roleName":"Introducer","roles":[{"role_id":420,"role_name":"Introducer","system_role_key":"Introducer"}],"reportingManagerId":656,"reportingManagerName":"Anmol Kaur Bhatti","address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null}],"pagination":{"page":0,"size":10,"totalElements":114,"totalPages":12,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}},"message":"Users retrieved successfully.","timestamp":"2026-08-10T19:10:33.7687931Z"}
2026-08-10 19:10:33.319 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/roles responded 200 in 202.6871 ms
2026-08-10 19:10:33.318 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:cede83c60fa6] HTTP GET /api/v1/business/roles 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":406,"name":"Admin","description":"Full tenant super-user — all permissions","isActive":true,"isDefault":true,"permissionsCount":127,"designationsCount":2,"usersAssignedCount":1,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":407,"name":"Director","description":"Full control across all modules","isActive":true,"isDefault":true,"permissionsCount":125,"designationsCount":1,"usersAssignedCount":14,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":408,"name":"Branch Admin","description":"Full branch + AR control; user onboarding; own CPD","isActive":true,"isDefault":true,"permissionsCount":62,"designationsCount":1,"usersAssignedCount":17,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":409,"name":"Principal AR","description":"Full AR management; user onboarding; own CPD","isActive":true,"isDefault":true,"permissionsCount":56,"designationsCount":1,"usersAssignedCount":13,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":410,"name":"Onboarding Admin","description":"Full user onboarding authority across all user management sub-modules","isActive":true,"isDefault":true,"permissionsCount":58,"designationsCount":1,"usersAssignedCount":14,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":411,"name":"Onboarding Support","description":"Read and limited edit in user management — cannot approve or create users","isActive":true,"isDefault":true,"permissionsCount":40,"designationsCount":1,"usersAssignedCount":12,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":412,"name":"Mortgage Compliance","description":"Compliance oversight — team CPD approval + user profiles view","isActive":true,"isDefault":true,"permissionsCount":43,"designationsCount":1,"usersAssignedCount":6,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":413,"name":"Protection Compliance","description":"Compliance oversight — team CPD approval + user profiles view","isActive":true,"isDefault":true,"permissionsCount":42,"designationsCount":2,"usersAssignedCount":6,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":414,"name":"Protection Internal Auditor","description":"Audit-only access — view/export CPD, no approval","isActive":true,"isDefault":true,"permissionsCount":39,"designationsCount":2,"usersAssignedCount":5,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":415,"name":"Mortgage Internal Auditor","description":"Audit-only access — view/export CPD, no approval","isActive":true,"isDefault":true,"permissionsCount":39,"designationsCount":1,"usersAssignedCount":4,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":416,"name":"Protection Sales Manager","description":"Manages protection adviser team — CPD + branch/AR overview","isActive":true,"isDefault":true,"permissionsCount":43,"designationsCount":2,"usersAssignedCount":7,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":417,"name":"Mortgage Sales Manager","description":"Manages mortgage adviser team — CPD + branch/AR overview","isActive":true,"isDefault":true,"permissionsCount":42,"designationsCount":1,"usersAssignedCount":7,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":418,"name":"Protection Adviser","description":"Frontline adviser — own CPD management, limited user view","isActive":true,"isDefault":true,"permissionsCount":32,"designationsCount":5,"usersAssignedCount":25,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":419,"name":"Mortgage Adviser","description":"Frontline adviser — own CPD management, limited user view","isActive":true,"isDefault":true,"permissionsCount":33,"designationsCount":4,"usersAssignedCount":28,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":420,"name":"Introducer","description":"Lead introducer — minimal access: user list view + own CPD view","isActive":true,"isDefault":true,"permissionsCount":17,"designationsCount":1,"usersAssignedCount":9,"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":466,"name":"TESTING","description":"TESTING","isActive":true,"isDefault":false,"permissionsCount":24,"designationsCount":1,"usersAssignedCount":0,"createdAt":"2026-07-15T11:36:13.595798Z"},{"id":768,"name":"Supervisor","description":"Supervises all the roles","isActive":true,"isDefault":false,"permissionsCount":0,"designationsCount":1,"usersAssignedCount":0,"createdAt":"2026-07-31T10:33:36.483169Z"}],"pagination":{"page":0,"size":20,"totalElements":17,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-08-10T19:10:33.3144858Z"}
2026-08-10 19:10:33.291 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/departments responded 200 in 176.2368 ms
2026-08-10 19:10:33.291 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:9a0f6c7a148d] HTTP GET /api/v1/business/departments 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":190,"name":"Management","description":"Top-level administration","status":"Active","isDefault":true,"usersAssignedCount":15,"designationsCount":1,"hierarchy":"Assigned","designationNames":["Director"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":191,"name":"Sub Management","description":"Branch and AR-level administration","status":"Active","isDefault":true,"usersAssignedCount":28,"designationsCount":2,"hierarchy":"Assigned","designationNames":["Branch Admin","Principal AR"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":192,"name":"Onboarding","description":"User onboarding and verification","status":"Active","isDefault":true,"usersAssignedCount":13,"designationsCount":1,"hierarchy":"Assigned","designationNames":["Onboarding Admin"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":193,"name":"Compliance","description":"Regulatory compliance oversight","status":"Active","isDefault":true,"usersAssignedCount":15,"designationsCount":3,"hierarchy":"Assigned","designationNames":["Compliance Head","Protection Compliance Officer","Mortgage Compliance Officer"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":194,"name":"Protection","description":"Protection product advisory","status":"Active","isDefault":true,"usersAssignedCount":12,"designationsCount":2,"hierarchy":"Assigned","designationNames":["Protection Manager","Protection Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":195,"name":"Mortgage","description":"Mortgage product advisory","status":"Active","isDefault":true,"usersAssignedCount":14,"designationsCount":2,"hierarchy":"Assigned","designationNames":["Mortgage Manager","Mortgage Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":196,"name":"Protection & Mortgage","description":"Combined product advisory","status":"Active","isDefault":true,"usersAssignedCount":18,"designationsCount":3,"hierarchy":"Assigned","designationNames":["Protection & Mortgage Adviser","Esm","Professional Introducer"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":219,"name":"TESTING NAME DEPARTMENT","description":"TESTING DEPARTMENT","status":"Active","isDefault":false,"usersAssignedCount":0,"designationsCount":1,"hierarchy":"Assigned","designationNames":["TESTING DEMO"],"createdAt":"2026-07-15T11:38:30.43274Z"}],"pagination":{"page":0,"size":20,"totalElements":8,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-08-10T19:10:33.2822257Z"}
2026-08-10 19:10:33.289 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/designations responded 200 in 174.0181 ms
2026-08-10 19:10:33.289 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f051ba31703f] HTTP GET /api/v1/business/designations 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":379,"title":"Administrator","description":"Tenant administrator","isActive":true,"isDefault":true,"departmentsCount":2,"usersAssignedCount":1,"roleNames":["Admin"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":380,"title":"Director","description":"Tenant director","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":14,"roleNames":["Director"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":381,"title":"Branch Admin","description":"Branch-level administrator","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":16,"roleNames":["Branch Admin"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":382,"title":"Principal AR","description":"AR-level administrator","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":12,"roleNames":["Principal AR"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":383,"title":"Onboarding Admin","description":"Onboarding team lead","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":13,"roleNames":["Onboarding Admin","Onboarding Support"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":384,"title":"Compliance Head","description":"Head of compliance","isActive":true,"isDefault":true,"departmentsCount":2,"usersAssignedCount":6,"roleNames":["Mortgage Compliance","Protection Compliance"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":385,"title":"Protection Compliance Officer","description":"Protection compliance role","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":5,"roleNames":["Protection Internal Auditor","Protection Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":386,"title":"Mortgage Compliance Officer","description":"Mortgage compliance role","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":4,"roleNames":["Mortgage Internal Auditor","Mortgage Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":387,"title":"Protection Manager","description":"Protection team manager","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":7,"roleNames":["Protection Sales Manager","Protection Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":388,"title":"Protection Adviser","description":"Protection frontline","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":5,"roleNames":["Protection Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":389,"title":"Mortgage Manager","description":"Mortgage team manager","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":7,"roleNames":["Mortgage Sales Manager","Mortgage Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":390,"title":"Mortgage Adviser","description":"Mortgage frontline","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":7,"roleNames":["Mortgage Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":391,"title":"Protection & Mortgage Adviser","description":"Combined adviser","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":9,"roleNames":["Protection Adviser","Mortgage Adviser"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":392,"title":"Professional Introducer","description":"Lead introducer","isActive":true,"isDefault":true,"departmentsCount":1,"usersAssignedCount":9,"roleNames":["Introducer"],"createdAt":"2026-06-22T09:30:36.108493Z"},{"id":435,"title":"Financer","description":"money","isActive":true,"isDefault":false,"departmentsCount":0,"usersAssignedCount":0,"roleNames":["Admin"],"createdAt":"2026-07-07T08:47:00.690925Z"},{"id":436,"title":"TESTING DEMO","description":"TESTING PURPOSE","isActive":true,"isDefault":false,"departmentsCount":2,"usersAssignedCount":0,"roleNames":["TESTING"],"createdAt":"2026-07-15T11:37:47.92716Z"},{"id":717,"title":"Head Supervisor","description":"Supervises the junio supervisers and resolves their issues","isActive":true,"isDefault":false,"departmentsCount":1,"usersAssignedCount":0,"roleNames":["Supervisor"],"createdAt":"2026-07-31T10:34:23.953466Z"},{"id":774,"title":"Esm","description":"ESM","isActive":true,"isDefault":false,"departmentsCount":1,"usersAssignedCount":0,"roleNames":["Protection Compliance","Protection Internal Auditor","Protection Sales Manager","Protection Adviser"],"createdAt":"2026-08-05T10:09:46.211436Z"}],"pagination":{"page":0,"size":20,"totalElements":18,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-08-10T19:10:33.2829482Z"}
2026-08-10 19:10:33.289 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/ars responded 200 in 161.7178 ms
2026-08-10 19:10:33.288 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ad4764045e1e] HTTP GET /api/v1/business/ars 200
Req: [no body] Res: {"success":true,"data":{"stats":{"totalArs":4,"activeArs":3,"inactiveArs":1},"ars":{"content":[{"id":12,"companyName":"AR1","code":"AR-0004","userCredits":200,"branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","principalArUserId":816,"principalArName":"Sanyam PrinciapalAR","isActive":true,"createdAt":"2026-07-18T10:05:59.454735Z"},{"id":10,"companyName":"TESTINNG ARR","code":"AR-0003","userCredits":288,"branchId":16,"branchName":"BRANCH TESTING","principalArUserId":812,"principalArName":"TESTING AR","isActive":true,"createdAt":"2026-07-16T10:20:33.112492Z"},{"id":2,"companyName":"YYYYY","code":"AR-0002","userCredits":500,"branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","principalArUserId":null,"principalArName":null,"isActive":true,"createdAt":"2026-06-23T10:14:09.260365Z"}],"pagination":{"page":0,"size":20,"totalElements":3,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:33.2881606Z"}
2026-08-10 19:10:33.247 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/branches responded 200 in 113.5546 ms
2026-08-10 19:10:33.247 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ca9a0d8b68e8] HTTP GET /api/v1/business/branches 200
Req: [no body] Res: {"success":true,"data":{"setupRequired":false,"stats":{"totalBranches":10,"activeBranches":10,"inactiveBranches":0,"hqBranchName":"Wealthmax Financial Advisers Ltd."},"branches":{"content":[{"id":5,"name":"Wealthmax Financial Advisers Ltd.","code":"","email":"admin@wealthmax.co.uk","companyNo":null,"postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9875870657","userCredits":0,"isHq":true,"isActive":true,"admin":{"id":660,"fullName":"Gagan Deep","email":"gagan.deep+102@wealthmax.co.uk"},"createdAt":"2026-06-22T09:30:38.936642Z"},{"id":16,"name":"BRANCH TESTING","code":"BR-0003","email":"gagan.deep+444@wealthamx.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 6666666666","userCredits":491,"isHq":false,"isActive":true,"admin":{"id":799,"fullName":"ICC ICC","email":"gagan.deep+7711@wealthmax.co.uk"},"createdAt":"2026-07-16T09:58:00.809014Z"},{"id":35,"name":"CLEN","code":"BR-0006","email":"gagan.deep+6565@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 8878787878","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:54:22.439761Z"},{"id":40,"name":"Development","code":"BR-0009","email":"gagan.deep+5352@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":50,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:45:38.450016Z"},{"id":36,"name":"Gagan New Branch","code":"BR-0007","email":"gagan.deep+branchnew@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 5444654541","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:56:12.386161Z"},{"id":17,"name":"JP Morgan","code":"BR-0004","email":"prajwal.s+3489@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 2233222222","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":787,"fullName":"Sanyam Gupta","email":"sanyam.g+2@wealthmax.co.uk"},"createdAt":"2026-07-21T07:27:12.595736Z"},{"id":31,"name":"Meta","code":"BR-0005","email":"rajarao+1meta@wealthmax.co.uk","companyNo":"10501962","postcode":"BR11DG","city":"BROMLEY","phone":"+44 1223456789","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":861,"fullName":"Meta BR-admin","email":"rajarao+1metabradmin@wealthmax.co.uk"},"createdAt":"2026-07-29T06:49:53.381375Z"},{"id":39,"name":"TEST","code":"BR-0008","email":"gagan.deep+100000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":66,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:43:34.621571Z"},{"id":13,"name":"Testing Branch","code":"BR-0002","email":"gagan.deep+777@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":40,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-02T08:23:41.699156Z"},{"id":7,"name":"Tetsing Branch","code":"BR-0001","email":"gagan.deep+50000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":398,"isHq":false,"isActive":true,"admin":{"id":701,"fullName":"Gagan Khajuria","email":"gagan.deep+105@wealthmax.co.uk"},"createdAt":"2026-06-23T10:17:01.896364Z"}],"pagination":{"page":0,"size":20,"totalElements":10,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:33.2470968Z"}
2026-08-10 19:10:24.847 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/branches/admins responded 200 in 35.5808 ms
2026-08-10 19:10:24.847 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:31e4a16c357b] HTTP GET /api/v1/business/branches/admins 200
Req: [no body] Res: {"success":true,"data":[{"userId":660,"fullName":"Gagan Deep","email":"gagan.deep+102@wealthmax.co.uk","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd."},{"userId":861,"fullName":"Meta BR-admin","email":"rajarao+1metabradmin@wealthmax.co.uk","branchId":31,"branchName":"Meta"},{"userId":787,"fullName":"Sanyam Gupta","email":"sanyam.g+2@wealthmax.co.uk","branchId":17,"branchName":"JP Morgan"},{"userId":799,"fullName":"ICC ICC","email":"gagan.deep+7711@wealthmax.co.uk","branchId":16,"branchName":"BRANCH TESTING"},{"userId":701,"fullName":"Gagan Khajuria","email":"gagan.deep+105@wealthmax.co.uk","branchId":7,"branchName":"Tetsing Branch"}],"timestamp":"2026-08-10T19:10:24.844852Z"}
2026-08-10 19:10:24.838 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/branches responded 200 in 26.6421 ms
2026-08-10 19:10:24.838 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ee751bc405a8] HTTP GET /api/v1/business/branches 200
Req: [no body] Res: {"success":true,"data":{"setupRequired":false,"stats":{"totalBranches":10,"activeBranches":10,"inactiveBranches":0,"hqBranchName":"Wealthmax Financial Advisers Ltd."},"branches":{"content":[{"id":5,"name":"Wealthmax Financial Advisers Ltd.","code":"","email":"admin@wealthmax.co.uk","companyNo":null,"postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9875870657","userCredits":0,"isHq":true,"isActive":true,"admin":{"id":660,"fullName":"Gagan Deep","email":"gagan.deep+102@wealthmax.co.uk"},"createdAt":"2026-06-22T09:30:38.936642Z"},{"id":16,"name":"BRANCH TESTING","code":"BR-0003","email":"gagan.deep+444@wealthamx.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 6666666666","userCredits":491,"isHq":false,"isActive":true,"admin":{"id":799,"fullName":"ICC ICC","email":"gagan.deep+7711@wealthmax.co.uk"},"createdAt":"2026-07-16T09:58:00.809014Z"},{"id":35,"name":"CLEN","code":"BR-0006","email":"gagan.deep+6565@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 8878787878","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:54:22.439761Z"},{"id":40,"name":"Development","code":"BR-0009","email":"gagan.deep+5352@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":50,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:45:38.450016Z"},{"id":36,"name":"Gagan New Branch","code":"BR-0007","email":"gagan.deep+branchnew@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 5444654541","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:56:12.386161Z"},{"id":17,"name":"JP Morgan","code":"BR-0004","email":"prajwal.s+3489@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 2233222222","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":787,"fullName":"Sanyam Gupta","email":"sanyam.g+2@wealthmax.co.uk"},"createdAt":"2026-07-21T07:27:12.595736Z"},{"id":31,"name":"Meta","code":"BR-0005","email":"rajarao+1meta@wealthmax.co.uk","companyNo":"10501962","postcode":"BR11DG","city":"BROMLEY","phone":"+44 1223456789","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":861,"fullName":"Meta BR-admin","email":"rajarao+1metabradmin@wealthmax.co.uk"},"createdAt":"2026-07-29T06:49:53.381375Z"},{"id":39,"name":"TEST","code":"BR-0008","email":"gagan.deep+100000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":66,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:43:34.621571Z"},{"id":13,"name":"Testing Branch","code":"BR-0002","email":"gagan.deep+777@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":40,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-02T08:23:41.699156Z"},{"id":7,"name":"Tetsing Branch","code":"BR-0001","email":"gagan.deep+50000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":398,"isHq":false,"isActive":true,"admin":{"id":701,"fullName":"Gagan Khajuria","email":"gagan.deep+105@wealthmax.co.uk"},"createdAt":"2026-06-23T10:17:01.896364Z"}],"pagination":{"page":0,"size":10,"totalElements":10,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:24.8380226Z"}
2026-08-10 19:10:20.822 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/ars/10/documents responded 200 in 24.6360 ms
2026-08-10 19:10:20.822 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:c71944583d2f] HTTP GET /api/v1/business/ars/10/documents 200
Req: [no body] Res: {"success":true,"data":[{"fileId":"0c010468-1245-4749-8f3d-50465d8e67e5","originalName":"1mb (4).pdf","displayName":null,"mimeType":"application/pdf","fileSize":1100144,"arId":10,"documentType":"Privacy Policy Document","createdAt":"2026-07-16T10:20:31.050476Z"},{"fileId":"315662d6-f7fa-440a-bf35-9cdd13db8cac","originalName":"1mb (5).pdf","displayName":null,"mimeType":"application/pdf","fileSize":1100144,"arId":10,"documentType":"Terms of Business","createdAt":"2026-07-16T10:20:28.516753Z"},{"fileId":"57d8d4b6-bed0-4d0c-aa2f-c3a8f76a32a2","originalName":"7c5ad673-3317-44b1-9a17-dbc49052778c. (1).png","displayName":null,"mimeType":"image/png","fileSize":25987,"arId":10,"documentType":"Company Logo","createdAt":"2026-07-16T10:20:24.674599Z"}],"timestamp":"2026-08-10T19:10:20.8203567Z"}
2026-08-10 19:10:18.719 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/ars/10/users responded 200 in 59.9514 ms
2026-08-10 19:10:18.719 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:a1e370cca7b9] HTTP GET /api/v1/business/ars/10/users 200
Req: [no body] Res: {"success":true,"data":[{"id":812,"fullName":"TESTING AR","email":"gagan.deep+7721@wealthmax.co.uk","mobileNumber":"+44 3333333333","isPrincipalAr":true,"isActive":true,"department":"Sub Management","designation":"Principal AR","roles":["Principal AR"]}],"timestamp":"2026-08-10T19:10:18.7161092Z"}
2026-08-10 19:10:10.341 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/ars/10 responded 200 in 75.4059 ms
2026-08-10 19:10:10.341 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:a6f3909cca1d] HTTP GET /api/v1/business/ars/10 200
Req: [no body] Res: {"success":true,"data":{"id":10,"code":"AR-0003","isActive":true,"createdAt":"2026-07-16T10:20:33.112492Z","updatedAt":null,"stats":{"totalArUsers":1,"userCredits":288,"usedCredits":1},"companyInfo":{"companyName":"TESTINNG ARR","companyNumber":"45454343","tradingStyle":"TESTINNG ARR","protectionCommissionShare":20.0000,"mortgageCommissionShare":20.0000,"branchId":16,"branchName":"BRANCH TESTING"},"contactInfo":{"email":"gagan.deep+00009966@wealthmax.co.uk","complianceEmail":"gagan.deep+0000996645@wealthmax.co.uk","isEmailVerified":true,"isComplianceEmailVerified":true,"phone":null,"mobileNumber":"+44 3333333333"},"addressInfo":{"fullAddress":"BALLOON ONE LTD, 1000 GREAT WEST ROAD, BRENTFORD, MIDDLESEX","city":"BRENTFORD","postcode":"TW 89Dw","country":"United Kingdom"},"links":{"websiteUrl":null,"linkedInUrl":null,"facebookUrl":null,"instagramUrl":null,"xUrl":null},"documents":[{"fileId":"0c010468-1245-4749-8f3d-50465d8e67e5","originalName":"1mb (4).pdf","displayName":null,"mimeType":"application/pdf","fileSize":1100144,"arId":10,"documentType":"Privacy Policy Document","createdAt":"2026-07-16T10:20:31.050476Z"},{"fileId":"315662d6-f7fa-440a-bf35-9cdd13db8cac","originalName":"1mb (5).pdf","displayName":null,"mimeType":"application/pdf","fileSize":1100144,"arId":10,"documentType":"Terms of Business","createdAt":"2026-07-16T10:20:28.516753Z"},{"fileId":"57d8d4b6-bed0-4d0c-aa2f-c3a8f76a32a2","originalName":"7c5ad673-3317-44b1-9a17-dbc49052778c. (1).png","displayName":null,"mimeType":"image/png","fileSize":25987,"arId":10,"documentType":"Company Logo","createdAt":"2026-07-16T10:20:24.674599Z"}],"principalAr":{"userId":812,"name":"TESTING AR","email":"gagan.deep+7721@wealthmax.co.uk"}},"timestamp":"2026-08-10T19:10:10.3305876Z"}
2026-08-10 19:10:10.305 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/credits/branches/16 responded 200 in 38.4758 ms
2026-08-10 19:10:10.305 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:03fac0005c8b] HTTP GET /api/v1/business/credits/branches/16 200
Req: [no body] Res: {"success":true,"data":{"branchId":16,"branchName":"BRANCH TESTING","allocated":491,"allocatedToArs":288,"usedByUsers":12,"remaining":192},"timestamp":"2026-08-10T19:10:10.3019032Z"}
2026-08-10 19:10:10.268 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/businessusers/principal-ar-candidates/ responded 200 in 22.5831 ms
2026-08-10 19:10:10.268 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:5e0e7d2f1524] HTTP GET /api/v1/business/businessusers/principal-ar-candidates/ 200
Req: [no body] Res: {"success":true,"data":{"content":[{"userId":702,"userFacingId":"WFAL-SC-0007","email":"gagan.deep+222@wealthmax.co.uk","firstName":"Living","lastName":"Stone","fullName":"Living Stone","mobileNumber":"+44 4444444444","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":2,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":791,"userFacingId":"WFAL-SC-0022","email":"prajwal.s+2389@wealthmax.co.uk","firstName":"Prajwalpal","lastName":"Singh","fullName":"Prajwalpal Singh","mobileNumber":"+44 4235453463","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":894,"userFacingId":"WFAL-SC-0074","email":"sarthak.s+principalar3@wealthmax.co.uk","firstName":"Principal AR","lastName":"User3","fullName":"Principal AR User3","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":895,"userFacingId":"WFAL-SC-0075","email":"sarthak.s+principalar4@wealthmax.co.uk","firstName":"Principal AR","lastName":"User4","fullName":"Principal AR User4","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":896,"userFacingId":"WFAL-SC-0076","email":"sarthak.s+principalar5@wealthmax.co.uk","firstName":"Principal AR","lastName":"User5","fullName":"Principal AR User5","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null}],"pagination":{"page":0,"size":20,"totalElements":5,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Principal AR users retrieved successfully.","timestamp":"2026-08-10T19:10:10.2685849Z"}
2026-08-10 19:10:10.253 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/branches responded 200 in 6.9353 ms
2026-08-10 19:10:10.253 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:50470df33989] HTTP GET /api/v1/business/branches 200
Req: [no body] Res: {"success":true,"data":{"setupRequired":false,"stats":{"totalBranches":10,"activeBranches":10,"inactiveBranches":0,"hqBranchName":"Wealthmax Financial Advisers Ltd."},"branches":{"content":[{"id":16,"name":"BRANCH TESTING","code":"BR-0003","email":"gagan.deep+444@wealthamx.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 6666666666","userCredits":491,"isHq":false,"isActive":true,"admin":{"id":799,"fullName":"ICC ICC","email":"gagan.deep+7711@wealthmax.co.uk"},"createdAt":"2026-07-16T09:58:00.809014Z"},{"id":35,"name":"CLEN","code":"BR-0006","email":"gagan.deep+6565@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 8878787878","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:54:22.439761Z"},{"id":40,"name":"Development","code":"BR-0009","email":"gagan.deep+5352@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":50,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:45:38.450016Z"},{"id":36,"name":"Gagan New Branch","code":"BR-0007","email":"gagan.deep+branchnew@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 5444654541","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:56:12.386161Z"},{"id":17,"name":"JP Morgan","code":"BR-0004","email":"prajwal.s+3489@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 2233222222","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":787,"fullName":"Sanyam Gupta","email":"sanyam.g+2@wealthmax.co.uk"},"createdAt":"2026-07-21T07:27:12.595736Z"},{"id":31,"name":"Meta","code":"BR-0005","email":"rajarao+1meta@wealthmax.co.uk","companyNo":"10501962","postcode":"BR11DG","city":"BROMLEY","phone":"+44 1223456789","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":861,"fullName":"Meta BR-admin","email":"rajarao+1metabradmin@wealthmax.co.uk"},"createdAt":"2026-07-29T06:49:53.381375Z"},{"id":39,"name":"TEST","code":"BR-0008","email":"gagan.deep+100000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":66,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:43:34.621571Z"},{"id":13,"name":"Testing Branch","code":"BR-0002","email":"gagan.deep+777@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":40,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-02T08:23:41.699156Z"},{"id":7,"name":"Tetsing Branch","code":"BR-0001","email":"gagan.deep+50000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":398,"isHq":false,"isActive":true,"admin":{"id":701,"fullName":"Gagan Khajuria","email":"gagan.deep+105@wealthmax.co.uk"},"createdAt":"2026-06-23T10:17:01.896364Z"},{"id":5,"name":"Wealthmax Financial Advisers Ltd.","code":"","email":"admin@wealthmax.co.uk","companyNo":null,"postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9875870657","userCredits":0,"isHq":true,"isActive":true,"admin":{"id":660,"fullName":"Gagan Deep","email":"gagan.deep+102@wealthmax.co.uk"},"createdAt":"2026-06-22T09:30:38.936642Z"}],"pagination":{"page":0,"size":100,"totalElements":10,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:10.2531252Z"}
2026-08-10 19:10:03.212 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/ars responded 200 in 10.0422 ms
2026-08-10 19:10:03.212 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:677cd0139b0a] HTTP GET /api/v1/business/ars 200
Req: [no body] Res: {"success":true,"data":{"stats":{"totalArs":4,"activeArs":3,"inactiveArs":1},"ars":{"content":[{"id":12,"companyName":"AR1","code":"AR-0004","userCredits":200,"branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","principalArUserId":816,"principalArName":"Sanyam PrinciapalAR","isActive":true,"createdAt":"2026-07-18T10:05:59.454735Z"},{"id":1,"companyName":"Gagan","code":"AR-0001","userCredits":50,"branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","principalArUserId":null,"principalArName":null,"isActive":false,"createdAt":"2026-06-22T11:28:03.944274Z"},{"id":10,"companyName":"TESTINNG ARR","code":"AR-0003","userCredits":288,"branchId":16,"branchName":"BRANCH TESTING","principalArUserId":812,"principalArName":"TESTING AR","isActive":true,"createdAt":"2026-07-16T10:20:33.112492Z"},{"id":2,"companyName":"YYYYY","code":"AR-0002","userCredits":500,"branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","principalArUserId":null,"principalArName":null,"isActive":true,"createdAt":"2026-06-23T10:14:09.260365Z"}],"pagination":{"page":0,"size":10,"totalElements":4,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:03.2123048Z"}
2026-08-10 19:10:03.202 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/businessusers/principal-ar-candidates/ responded 200 in 16.6041 ms
2026-08-10 19:10:03.201 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:93d2054c3060] HTTP GET /api/v1/business/businessusers/principal-ar-candidates/ 200
Req: [no body] Res: {"success":true,"data":{"content":[{"userId":702,"userFacingId":"WFAL-SC-0007","email":"gagan.deep+222@wealthmax.co.uk","firstName":"Living","lastName":"Stone","fullName":"Living Stone","mobileNumber":"+44 4444444444","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":2,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":791,"userFacingId":"WFAL-SC-0022","email":"prajwal.s+2389@wealthmax.co.uk","firstName":"Prajwalpal","lastName":"Singh","fullName":"Prajwalpal Singh","mobileNumber":"+44 4235453463","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":894,"userFacingId":"WFAL-SC-0074","email":"sarthak.s+principalar3@wealthmax.co.uk","firstName":"Principal AR","lastName":"User3","fullName":"Principal AR User3","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":895,"userFacingId":"WFAL-SC-0075","email":"sarthak.s+principalar4@wealthmax.co.uk","firstName":"Principal AR","lastName":"User4","fullName":"Principal AR User4","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null},{"userId":896,"userFacingId":"WFAL-SC-0076","email":"sarthak.s+principalar5@wealthmax.co.uk","firstName":"Principal AR","lastName":"User5","fullName":"Principal AR User5","mobileNumber":"07700000000","applicationType":null,"userApplicationStatus":null,"statusDisplayName":"","userOnboardingStep":null,"isActive":true,"sanctionStatus":"0","createdAt":"0001-01-01T00:00:00","submittedAt":null,"companyAssignmentType":null,"branchId":null,"branchName":null,"arId":null,"arName":null,"departmentId":null,"departmentName":null,"designationId":382,"designationName":null,"roleName":"Principal AR","roles":[{"role_id":409,"role_name":"Principal AR","system_role_key":"PrincipalAr"}],"reportingManagerId":null,"reportingManagerName":null,"address":null,"postcode":null,"country":null,"city":null,"applicationId":null,"profilePhotoUrl":null}],"pagination":{"page":0,"size":20,"totalElements":5,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Principal AR users retrieved successfully.","timestamp":"2026-08-10T19:10:03.2015288Z"}
2026-08-10 19:10:03.190 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/branches responded 200 in 8.5453 ms
2026-08-10 19:10:03.190 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:2085c0c84bd2] HTTP GET /api/v1/business/branches 200
Req: [no body] Res: {"success":true,"data":{"setupRequired":false,"stats":{"totalBranches":10,"activeBranches":10,"inactiveBranches":0,"hqBranchName":"Wealthmax Financial Advisers Ltd."},"branches":{"content":[{"id":16,"name":"BRANCH TESTING","code":"BR-0003","email":"gagan.deep+444@wealthamx.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 6666666666","userCredits":491,"isHq":false,"isActive":true,"admin":{"id":799,"fullName":"ICC ICC","email":"gagan.deep+7711@wealthmax.co.uk"},"createdAt":"2026-07-16T09:58:00.809014Z"},{"id":35,"name":"CLEN","code":"BR-0006","email":"gagan.deep+6565@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 8878787878","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:54:22.439761Z"},{"id":40,"name":"Development","code":"BR-0009","email":"gagan.deep+5352@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":50,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:45:38.450016Z"},{"id":36,"name":"Gagan New Branch","code":"BR-0007","email":"gagan.deep+branchnew@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 5444654541","userCredits":1,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-31T12:56:12.386161Z"},{"id":17,"name":"JP Morgan","code":"BR-0004","email":"prajwal.s+3489@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 2233222222","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":787,"fullName":"Sanyam Gupta","email":"sanyam.g+2@wealthmax.co.uk"},"createdAt":"2026-07-21T07:27:12.595736Z"},{"id":31,"name":"Meta","code":"BR-0005","email":"rajarao+1meta@wealthmax.co.uk","companyNo":"10501962","postcode":"BR11DG","city":"BROMLEY","phone":"+44 1223456789","userCredits":12,"isHq":false,"isActive":true,"admin":{"id":861,"fullName":"Meta BR-admin","email":"rajarao+1metabradmin@wealthmax.co.uk"},"createdAt":"2026-07-29T06:49:53.381375Z"},{"id":39,"name":"TEST","code":"BR-0008","email":"gagan.deep+100000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9155555555","userCredits":66,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-08-07T09:43:34.621571Z"},{"id":13,"name":"Testing Branch","code":"BR-0002","email":"gagan.deep+777@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":40,"isHq":false,"isActive":true,"admin":null,"createdAt":"2026-07-02T08:23:41.699156Z"},{"id":7,"name":"Tetsing Branch","code":"BR-0001","email":"gagan.deep+50000@wealthmax.co.uk","companyNo":"10501962","postcode":"TW89DW","city":"BRENTFORD","phone":"+44 3333333333","userCredits":398,"isHq":false,"isActive":true,"admin":{"id":701,"fullName":"Gagan Khajuria","email":"gagan.deep+105@wealthmax.co.uk"},"createdAt":"2026-06-23T10:17:01.896364Z"},{"id":5,"name":"Wealthmax Financial Advisers Ltd.","code":"","email":"admin@wealthmax.co.uk","companyNo":null,"postcode":"TW8 9DW","city":"BRENTFORD","phone":"+44 9875870657","userCredits":0,"isHq":true,"isActive":true,"admin":{"id":660,"fullName":"Gagan Deep","email":"gagan.deep+102@wealthmax.co.uk"},"createdAt":"2026-06-22T09:30:38.936642Z"}],"pagination":{"page":0,"size":100,"totalElements":10,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-08-10T19:10:03.190313Z"}
2026-08-10 19:10:01.671 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-protection-unallocated responded 200 in 83.5108 ms
2026-08-10 19:10:01.671 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:b2bc4c4cc5a7] HTTP GET /api/v1/business/commissions-protection-unallocated 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":3,"commissionImportId":3,"entryNumber":5,"batchReference":"BAT-0003","policyNumber":"pr0012","clientName":"Living Stone","grossAmount":200.00,"caseId":299,"userFacingCaseId":"CASE-0232","caseStatusId":595,"policyStatusName":"New Case","reviewStatus":null,"producingUserId":929,"producingUserName":"Professional Introducer User8","commissionType":"Non-Indemnity","snapshotVersionUsed":1,"matchStatus":"AutoMatched","allocationStatus":"PendingReview","failureCode":null,"isAllocatable":true,"receivedDate":"01-02-2027","providerName":"Zurich","productName":"Life Insurance, Critical Illness","premiumAmount":100.00,"policyTermMonths":48,"allocatedAt":null,"approvedAt":null,"entriesCount":2,"isMissingCommissionType":false,"isCommissionTypeMismatched":true,"hasInactiveRecipient":false,"isClean":true,"allocations":[{"id":5,"recipientUserId":929,"recipientNameSnapshot":"Professional Introducer User8","recipientDesignation":"Professional Introducer","isCompanyShare":false,"chainDepth":0,"percentageOfGross":70.0000,"amount":140.00,"recipientIsInactive":false,"retentionPercentage":null,"retentionSource":"NotApplicable","projectedPotBalance":null,"projectedNetAmount":140.00,"retentionPeriodMonths":null},{"id":6,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":false,"chainDepth":1,"percentageOfGross":30.0000,"amount":60.00,"recipientIsInactive":false,"retentionPercentage":null,"retentionSource":"NotApplicable","projectedPotBalance":null,"projectedNetAmount":60.00,"retentionPeriodMonths":null}]}],"pagination":{"page":0,"size":10,"totalElements":1,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Unallocated commission entries retrieved successfully.","timestamp":"2026-08-10T19:10:01.670784Z"}
2026-08-10 19:10:01.665 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-protection-overview responded 200 in 77.3951 ms
2026-08-10 19:10:01.664 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:800166fe13b5] HTTP GET /api/v1/business/commissions-protection-overview 200
Req: [no body] Res: {"success":true,"data":{"entries":{"totalEntries":3,"totalGrossAmount":2400.00,"unallocatedCount":1,"unallocatedGrossAmount":200.00,"allocatedCount":0,"allocatedGrossAmount":0,"approvedCount":2,"approvedGrossAmount":2200.00,"unpaidSummaryCount":1,"statementsCount":1,"batchesCount":2},"money":{"approvedShareAmount":2200.00,"retentionHeldAmount":280.00,"paidNetAmount":1260.00,"unpaidNetAmount":660.00,"accumulatingNetAmount":0,"adjustments":0,"netPayableAmount":660.00,"unpaidRecipientCount":1},"retentionPot":{"heldCount":1,"heldAmount":280.00,"releasedCount":0,"releasedAmount":0,"consumedCount":0,"consumedAmount":0},"attention":{"unmatchedEntryCount":0,"unallocatableEntryCount":0,"inactiveRecipientAllocationCount":0}},"message":"Commissions overview retrieved successfully.","timestamp":"2026-08-10T19:10:01.664736Z"}
2026-08-10 19:09:59.937 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/cpd/my/records responded 200 in 26.2614 ms
2026-08-10 19:09:59.937 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:5ae357f648af] HTTP GET /api/v1/cpd/my/records 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":92,"courseName":"Testing","cpdType":"Unstructured","attendedDate":"2026-07-01","durationMinutes":60,"status":"Approved","submittedAt":"2026-07-30T12:28:15.60538Z","category":"Mortgage","learningPlatform":"Webinar"},{"id":75,"courseName":"TESTING DEMO","cpdType":"Structured","attendedDate":"2026-07-01","durationMinutes":70,"status":"Approved","submittedAt":"2026-07-20T11:40:58.344031Z","category":"Investments","learningPlatform":"Guide / Ebook"},{"id":53,"courseName":"Finance","cpdType":"Structured","attendedDate":"1965-07-08","durationMinutes":180,"status":"Approved","submittedAt":"2026-07-07T12:28:41.545763Z","category":"Mortgage","learningPlatform":"Webinar"},{"id":52,"courseName":"Admin","cpdType":"Unstructured","attendedDate":"2026-07-01","durationMinutes":300,"status":"Approved","submittedAt":"2026-07-06T10:25:30.271168Z","category":"CommercialLending","learningPlatform":"Other"},{"id":46,"courseName":"Nekshan.k+11@wealthmax.co.uk","cpdType":"Unstructured","attendedDate":"2026-07-03","durationMinutes":240,"status":"Approved","submittedAt":"2026-07-06T09:12:34.625216Z","category":"Mortgage","learningPlatform":"Workshop / Seminar / Podcast"},{"id":34,"courseName":"CPD 55","cpdType":"Structured","attendedDate":"2023-07-12","durationMinutes":145,"status":"Approved","submittedAt":"2026-07-06T08:23:30.97191Z","category":"TaxationAndTrust","learningPlatform":"Online Course"},{"id":27,"courseName":"Qcscsdac","cpdType":"Unstructured","attendedDate":"2026-07-02","durationMinutes":785,"status":"Approved","submittedAt":"2026-07-06T08:06:13.856518Z","category":"Other","learningPlatform":"Other"},{"id":26,"courseName":"Finance","cpdType":"Structured","attendedDate":"1971-07-01","durationMinutes":955,"status":"Approved","submittedAt":"2026-07-06T08:03:12.058203Z","category":"Investments","learningPlatform":"Online Course"},{"id":20,"courseName":"Gagan","cpdType":"Unstructured","attendedDate":"2026-06-10","durationMinutes":70,"status":"Approved","submittedAt":"2026-06-30T14:07:23.965605Z","category":"Mortgage","learningPlatform":"Reading Material without Test"},{"id":17,"courseName":"Qa Automation","cpdType":"Structured","attendedDate":"2011-01-28","durationMinutes":665,"status":"Approved","submittedAt":"2026-06-30T08:21:37.559896Z","category":"Mortgage","learningPlatform":"Webinar"}],"pagination":{"page":0,"size":10,"totalElements":11,"totalPages":2,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}},"timestamp":"2026-08-10T19:09:59.9371595Z"}
2026-08-10 19:09:59.934 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/cpd/my responded 200 in 6.7931 ms
2026-08-10 19:09:59.934 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:40d8a87babee] HTTP GET /api/v1/cpd/my 200
Req: [no body] Res: {"success":true,"data":{"totalRecords":11,"approvedCount":11,"pendingCount":0,"rejectedCount":0,"totalHours":4500,"structuredHours":3045,"unstructuredHours":1455,"approvalRate":100},"timestamp":"2026-08-10T19:09:59.9347241Z"}
2026-08-10 19:09:59.926 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/notifications responded 200 in 39.3547 ms
2026-08-10 19:09:59.926 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1b1bb9343d59] HTTP GET /api/v1/business/notifications 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":925,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:49:15.004918Z","isRead":true},{"id":924,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:49:14.997498Z","isRead":true},{"id":922,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:44:10.197555Z","isRead":true},{"id":921,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:44:10.190271Z","isRead":true},{"id":918,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:40:04.909599Z","isRead":true},{"id":917,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:40:04.903616Z","isRead":true},{"id":914,"title":"Business User Status Changed","message":"Business user #932 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:38:46.320536Z","isRead":true},{"id":912,"title":"Business User Status Changed","message":"Business user #932 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:38:03.770506Z","isRead":true},{"id":910,"title":"Business User Status Changed","message":"Business user #932 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:37:29.378344Z","isRead":true},{"id":908,"title":"Business User Status Changed","message":"Business user #782 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T10:31:23.443331Z","isRead":true},{"id":906,"title":"New Branch Created","message":"A new branch Development has been created.","notificationType":"Info","eventType":"BranchCreated","tenantId":28,"audienceType":"HQBranchUsers","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T09:45:38.460064Z","isRead":true},{"id":905,"title":"New Branch Created","message":"A new branch TEST has been created.","notificationType":"Info","eventType":"BranchCreated","tenantId":28,"audienceType":"HQBranchUsers","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T09:43:34.745792Z","isRead":true},{"id":904,"title":"Business User Deactivated","message":"Business user Monster App (rajarao+1mons1@wealthmax.co.uk) has been deactivated.","notificationType":"Warning","eventType":"BusinessUserDeactivated","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-06T12:15:26.123313Z","isRead":true},{"id":902,"title":"Business User Status Changed","message":"Business user #939 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:50:53.221672Z","isRead":true},{"id":900,"title":"Business User Status Changed","message":"Business user #939 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:50:39.835148Z","isRead":true},{"id":898,"title":"Business User Status Changed","message":"Business user #939 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:49:40.93601Z","isRead":true},{"id":896,"title":"Business User Status Changed","message":"Business user #939 status changed from OnboardingReview to InProgress.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:46:24.926545Z","isRead":true},{"id":894,"title":"Business User Status Changed","message":"Business user #939 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:43:53.373478Z","isRead":true},{"id":893,"title":"New Business User Created","message":"New business user Monster App (rajarao+1mons1@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:16:26.300989Z","isRead":true},{"id":891,"title":"Business User Status Changed","message":"Business user #938 status changed from OnboardingReview to Rejected.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:07:53.123348Z","isRead":true},{"id":889,"title":"Business User Status Changed","message":"Business user #938 status changed from FinalReview to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:01:16.143618Z","isRead":true},{"id":874,"title":"Business User Status Changed","message":"Business user #938 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T09:56:17.056853Z","isRead":true},{"id":872,"title":"Business User Status Changed","message":"Business user #938 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T09:45:02.600313Z","isRead":true},{"id":871,"title":"New Business User Created","message":"New business user August Fifth (rajarao+1af@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T08:52:46.146945Z","isRead":true},{"id":870,"title":"New Business User Created","message":"New business user Arsh Singh (arshreen.s@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T07:23:46.090672Z","isRead":true},{"id":863,"title":"New Business User Created","message":"New business user Gagan Gagan (gagan.deep+444333@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T13:15:11.862713Z","isRead":true},{"id":862,"title":"New Business User Created","message":"New business user Mort Gage (rajarao+1mort@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T11:50:58.133981Z","isRead":true},{"id":861,"title":"New Business User Created","message":"New business user Sakshi Test (sakshi.dutta+34@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T11:50:41.01481Z","isRead":true},{"id":858,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:56.930912Z","isRead":true},{"id":857,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:56.924918Z","isRead":true},{"id":854,"title":"User Role Updated","message":"Max Well (gagan.deep+77@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:33.643254Z","isRead":true},{"id":853,"title":"User Role Updated","message":"Max Well (gagan.deep+77@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:33.637017Z","isRead":true},{"id":850,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:06:33.149352Z","isRead":true},{"id":849,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:06:33.143091Z","isRead":true},{"id":847,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:45.5889Z","isRead":true},{"id":846,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:45.583115Z","isRead":true},{"id":844,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:25.606189Z","isRead":true},{"id":843,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:25.599249Z","isRead":true},{"id":840,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:02:40.458995Z","isRead":true},{"id":839,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:02:40.45076Z","isRead":true},{"id":836,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:49:05.495821Z","isRead":true},{"id":835,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:49:05.488725Z","isRead":true},{"id":832,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:48:45.170759Z","isRead":true},{"id":831,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:48:45.164764Z","isRead":true},{"id":826,"title":"Business User Status Changed","message":"Business user #885 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:19:12.510219Z","isRead":true},{"id":824,"title":"Business User Status Changed","message":"Business user #885 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:18:29.410895Z","isRead":true},{"id":822,"title":"Business User Status Changed","message":"Business user #885 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:14:01.330007Z","isRead":true},{"id":820,"title":"Business User Status Changed","message":"Business user #885 status changed from OnboardingReview to InProgress.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:13:26.539122Z","isRead":true},{"id":817,"title":"Business User Status Changed","message":"Business user #886 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:10:47.402343Z","isRead":true},{"id":815,"title":"Business User Status Changed","message":"Business user #886 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-03T15:10:06.097312Z","isRead":true}],"pagination":{"page":0,"size":50,"totalElements":317,"totalPages":7,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}},"message":"Notifications retrieved successfully.","timestamp":"2026-08-10T19:09:59.9257793Z"}
2026-08-10 19:09:59.912 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/notifications/unread-count responded 200 in 5.9413 ms
2026-08-10 19:09:59.912 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:50e95ddd3be2] HTTP GET /api/v1/business/notifications/unread-count 200
Req: [no body] Res: {"success":true,"message":"Unread count retrieved successfully.","timestamp":"2026-08-10T19:09:59.9123751Z"}
2026-08-10 19:09:59.893 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.1222 ms
2026-08-10 19:09:59.893 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d47c1166c5da] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#4F46E5","secondaryColor":"#EA580C","logoUrl":"https://protectionmortgagecrm.blob.core.windows.net/superadmin/staging/tenant-documents/28/28/28_Wealthmax-Financial-Advisers-Ltd._2026-06-22/c0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png?sv=2026-02-06&se=2026-08-10T20%3A09%3A59Z&sr=b&sp=r&rscd=attachment%3B+filename%3Dc0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png%3B+filename*%3DUTF-8%27%27c0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png&sig=J%2FQnBd00BWNXKCp%2F0anZFIJsIENpTaKHSOFOivY1mUA%3D","companyLogoThumbnailUrl":"https://protectionmortgagecrm.blob.core.windows.net/superadmin/staging/tenant-documents/28/f6694f6c-ddfc-4d16-80bc-664a01b3d416_logo.jpg?sv=2026-02-06&se=2036-07-18T13%3A31%3A06Z&sr=b&sp=r&sig=hNhUd61tHsDcA56Q%2F%2FmoaWos%2ByUFldaq%2Be979eNYxAE%3D","socialUrls":{"facebookUrl":null,"instagramUrl":null,"xUrl":null,"linkedInUrl":null}},"timestamp":"2026-08-10T19:09:59.8933062Z"}
2026-08-10 19:09:59.756 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/me responded 200 in 14.0053 ms
2026-08-10 19:09:59.756 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:4c4d57439011] HTTP GET /api/v1/business/me 200
Req: [no body] Res: {"success":true,"data":{"id":656,"userFacingId":"","email":"anmol.b@wealthmax.co.uk","firstName":"Anmol Kaur","lastName":"Bhatti","mobileNumber":"+44 6586384768","userOnboardingStep":null,"tenantId":28,"tenantCompanyName":"Wealthmax Financial Advisers Ltd.","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":190,"departmentName":"Management","designationId":379,"designationName":"Administrator","roles":[{"role_id":406,"role_name":"Admin","system_role_key":"Admin"}],"primaryColor":"#4F46E5","secondaryColor":"#EA580C","permissions":{"permissions":{"user_management":{"user_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"application_form_user_fills":{"is_parent":false,"permissions":["view","edit","approve"]},"user_profile":{"is_parent":false,"permissions":["view","edit","delete","approve"]}},"branch_management":{"branch_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"branch_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"my_tenant":{"company_details":{"is_parent":true,"permissions":["view","edit"]},"branding":{"is_parent":false,"permissions":["view","edit"]},"documents":{"is_parent":false,"permissions":["view","create","edit"]}},"ar_management":{"ar_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"ar_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"cpd":{"my_cpd":{"is_parent":true,"permissions":["view","create","edit","delete","export"]},"team_cpd_main_page":{"is_parent":false,"permissions":["view","export","approve"]}},"client_management":{"my_clients":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_clients":{"is_parent":false,"permissions":["view","edit","export"]},"client_overview":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"case_management":{"my_cases":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_cases":{"is_parent":false,"permissions":["view","edit","export"]},"case_overview":{"is_parent":false,"permissions":["view","create","edit","delete","approve","lock"]},"case_review":{"is_parent":false,"permissions":["view","create","edit","delete"]},"case_notes":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"roles":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"departments":{"main":{"is_parent":true,"permissions":["view","create","edit","delete","export","approve","reassign","lock"]}},"designations":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"subscription_management":{"my_subscription_page":{"is_parent":true,"permissions":["view"]}},"dashboard":{"stats":{"is_parent":true,"permissions":["view"]}},"countries":{"main":{"is_parent":true,"permissions":["view"]}},"reporting":{"reports_main_page":{"is_parent":true,"permissions":["view","export"]}},"document_templates":{"document_template_main_page":{"is_parent":true,"permissions":["view","create"]}},"exam_zone":{"exam_listing_page":{"is_parent":true,"permissions":["view","create","edit","delete"]},"my_results":{"is_parent":false,"permissions":["view","export"]},"team_results":{"is_parent":false,"permissions":["view","edit","export"]}},"support":{"my_queries":{"is_parent":true,"permissions":["view","create"]}},"notifications":{"notifications_main_page":{"is_parent":true,"permissions":["view","edit"]}},"solicitors":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"document_library":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"commissions":{"statements":{"is_parent":true,"permissions":["view","create","edit"]},"allocations":{"is_parent":false,"permissions":["view","edit","approve"]},"profiles":{"is_parent":false,"permissions":["view","edit"]},"settings":{"is_parent":false,"permissions":["view","edit"]},"retention_pot":{"is_parent":false,"permissions":["view","approve"]},"my_statements":{"is_parent":false,"permissions":["view"]}}}},"profileLogoThumbnailUrl":null},"message":"Profile retrieved successfully.","timestamp":"2026-08-10T19:09:59.7562615Z"}
2026-08-10 19:09:54.430 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /hubs/notifications responded 200 in 669.1059 ms
2026-08-10 19:09:53.577 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /hubs/notifications/negotiate responded 200 in 2.6639 ms
2026-08-10 19:09:39.080 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/cpd/my/records responded 200 in 122.9475 ms
2026-08-10 19:09:39.080 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:91a6c7f85738] HTTP GET /api/v1/cpd/my/records 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":92,"courseName":"Testing","cpdType":"Unstructured","attendedDate":"2026-07-01","durationMinutes":60,"status":"Approved","submittedAt":"2026-07-30T12:28:15.60538Z","category":"Mortgage","learningPlatform":"Webinar"},{"id":75,"courseName":"TESTING DEMO","cpdType":"Structured","attendedDate":"2026-07-01","durationMinutes":70,"status":"Approved","submittedAt":"2026-07-20T11:40:58.344031Z","category":"Investments","learningPlatform":"Guide / Ebook"},{"id":53,"courseName":"Finance","cpdType":"Structured","attendedDate":"1965-07-08","durationMinutes":180,"status":"Approved","submittedAt":"2026-07-07T12:28:41.545763Z","category":"Mortgage","learningPlatform":"Webinar"},{"id":52,"courseName":"Admin","cpdType":"Unstructured","attendedDate":"2026-07-01","durationMinutes":300,"status":"Approved","submittedAt":"2026-07-06T10:25:30.271168Z","category":"CommercialLending","learningPlatform":"Other"},{"id":46,"courseName":"Nekshan.k+11@wealthmax.co.uk","cpdType":"Unstructured","attendedDate":"2026-07-03","durationMinutes":240,"status":"Approved","submittedAt":"2026-07-06T09:12:34.625216Z","category":"Mortgage","learningPlatform":"Workshop / Seminar / Podcast"},{"id":34,"courseName":"CPD 55","cpdType":"Structured","attendedDate":"2023-07-12","durationMinutes":145,"status":"Approved","submittedAt":"2026-07-06T08:23:30.97191Z","category":"TaxationAndTrust","learningPlatform":"Online Course"},{"id":27,"courseName":"Qcscsdac","cpdType":"Unstructured","attendedDate":"2026-07-02","durationMinutes":785,"status":"Approved","submittedAt":"2026-07-06T08:06:13.856518Z","category":"Other","learningPlatform":"Other"},{"id":26,"courseName":"Finance","cpdType":"Structured","attendedDate":"1971-07-01","durationMinutes":955,"status":"Approved","submittedAt":"2026-07-06T08:03:12.058203Z","category":"Investments","learningPlatform":"Online Course"},{"id":20,"courseName":"Gagan","cpdType":"Unstructured","attendedDate":"2026-06-10","durationMinutes":70,"status":"Approved","submittedAt":"2026-06-30T14:07:23.965605Z","category":"Mortgage","learningPlatform":"Reading Material without Test"},{"id":17,"courseName":"Qa Automation","cpdType":"Structured","attendedDate":"2011-01-28","durationMinutes":665,"status":"Approved","submittedAt":"2026-06-30T08:21:37.559896Z","category":"Mortgage","learningPlatform":"Webinar"}],"pagination":{"page":0,"size":10,"totalElements":11,"totalPages":2,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}},"timestamp":"2026-08-10T19:09:39.0677361Z"}
2026-08-10 19:09:38.980 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/cpd/my responded 200 in 33.6420 ms
2026-08-10 19:09:38.979 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:58a3e9dc4084] HTTP GET /api/v1/cpd/my 200
Req: [no body] Res: {"success":true,"data":{"totalRecords":11,"approvedCount":11,"pendingCount":0,"rejectedCount":0,"totalHours":4500,"structuredHours":3045,"unstructuredHours":1455,"approvalRate":100},"timestamp":"2026-08-10T19:09:38.9768795Z"}
2026-08-10 19:09:37.572 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/exam-zone/exams responded 200 in 138.1873 ms
2026-08-10 19:09:37.571 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:582db9c1bc32] HTTP GET /api/v1/exam-zone/exams 200
Req: [no body] Res: {"success":true,"data":{"exams":{"content":[{"id":2,"examName":"DSA","description":"Not a rebel without Cost","examGroup":"All","startDate":null,"endDate":"2027-07-12","durationMinutes":50,"totalQuestions":2,"maxAttempts":5,"cpdHours":10,"cpdMinutes":20,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Available","progressPercentage":50,"averageRating":5.00,"totalReviews":1,"isDisabled":false},{"id":20,"examName":"General knowledge","description":"Nothing ","examGroup":"All","startDate":null,"endDate":"2027-08-31","durationMinutes":50,"totalQuestions":5,"maxAttempts":5,"cpdHours":10,"cpdMinutes":15,"attemptsRemaining":3,"hasMaterial":true,"canTakeExam":true,"coverImageUrl":null,"examStatus":"Available","progressPercentage":100,"averageRating":0.0,"totalReviews":0,"isDisabled":false},{"id":13,"examName":"Testing EXAM 77","description":"dsfghjklsdfghfdsfgfds","examGroup":"All","startDate":null,"endDate":"2026-07-30","durationMinutes":30,"totalQuestions":0,"maxAttempts":3,"cpdHours":2,"cpdMinutes":15,"attemptsRemaining":3,"hasMaterial":false,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":100,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":12,"examName":"Testing EXAM 77","description":"dsfghjklsdfghfdsfgfds","examGroup":"All","startDate":null,"endDate":"2026-07-30","durationMinutes":30,"totalQuestions":0,"maxAttempts":2,"cpdHours":2,"cpdMinutes":15,"attemptsRemaining":2,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":6,"examName":"Testing Exam 4","description":"one who is creating the exam is not able to view it","examGroup":"Administrator","startDate":null,"endDate":"2026-07-14","durationMinutes":25,"totalQuestions":1,"maxAttempts":2,"cpdHours":22,"cpdMinutes":10,"attemptsRemaining":2,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":7,"examName":"Testing Exam 5","description":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since 1966, when designers at Letraset and James Mosley, the librarian at St Bride Printing Library in London, took a 1914 Cicero translation and scrambled it to make dummy text for Letraset's Body Type sheets. It has survived not only many decades, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised thanks to these sheets and more recently with desktop publishing software like Aldus PageMaker and Microsoft Word including versions of Lorem Ipsum.\n\n","examGroup":"Administrator","startDate":null,"endDate":"2026-07-27","durationMinutes":45,"totalQuestions":1,"maxAttempts":2,"cpdHours":4,"cpdMinutes":15,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":9,"examName":"Testing Exam 6","description":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since 1966, when designers at Letraset and James Mosley, the librarian at St Bride Printing Library in London, took a 1914 Cicero translation and scrambled it to make dummy text for Letraset's Body Type sheets. It has survived not only many decades, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised thanks to these sheets and more recently with desktop publishing software like Aldus PageMaker and Microsoft Word including versions of Lorem Ipsum.\n\n","examGroup":"Administrator","startDate":null,"endDate":"2026-07-29","durationMinutes":45,"totalQuestions":1,"maxAttempts":2,"cpdHours":6,"cpdMinutes":15,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":8,"examName":"Testing Exam 6","description":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since 1966, when designers at Letraset and James Mosley, the librarian at St Bride Printing Library in London, took a 1914 Cicero translation and scrambled it to make dummy text for Letraset's Body Type sheets. It has survived not only many decades, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised thanks to these sheets and more recently with desktop publishing software like Aldus PageMaker and Microsoft Word including versions of Lorem Ipsum.\n\n","examGroup":"Administrator","startDate":null,"endDate":"2026-07-29","durationMinutes":30,"totalQuestions":1,"maxAttempts":2,"cpdHours":3,"cpdMinutes":15,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":14,"examName":"Testing Exam 78","description":"asdfghfdsedfghgrdgf","examGroup":"All","startDate":null,"endDate":"2026-07-30","durationMinutes":30,"totalQuestions":1,"maxAttempts":2,"cpdHours":2,"cpdMinutes":10,"attemptsRemaining":2,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":15,"examName":"Testing Exam 79","description":"sdfghsedrftghdfgh","examGroup":"All","startDate":null,"endDate":"2026-07-30","durationMinutes":22,"totalQuestions":3,"maxAttempts":3,"cpdHours":2,"cpdMinutes":20,"attemptsRemaining":3,"hasMaterial":false,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":100,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":10,"examName":"Testing Exam 9","description":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since 1966, when designers at Letraset and James Mosley, the librarian at St Bride Printing Library in London, took a 1914 Cicero translation and scrambled it to make dummy text for Letraset's Body Type sheets. It has survived not only many decades, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised thanks to these sheets and more recently with desktop publishing software like Aldus PageMaker and Microsoft Word including versions of Lorem Ipsum.\n\n","examGroup":"Administrator","startDate":null,"endDate":"2026-07-29","durationMinutes":22,"totalQuestions":1,"maxAttempts":3,"cpdHours":2,"cpdMinutes":10,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true},{"id":19,"examName":"test","description":"lionhhjhnjjhnjnn","examGroup":"All","startDate":null,"endDate":"2026-08-31","durationMinutes":50,"totalQuestions":1,"maxAttempts":3,"cpdHours":10,"cpdMinutes":5,"attemptsRemaining":0,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Available","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":false},{"id":16,"examName":"vbnfgchnfgchn","description":"gcvn ghbv nghvb ","examGroup":"All","startDate":null,"endDate":"2026-07-31","durationMinutes":45,"totalQuestions":6,"maxAttempts":2,"cpdHours":44,"cpdMinutes":10,"attemptsRemaining":2,"hasMaterial":true,"canTakeExam":false,"coverImageUrl":null,"examStatus":"Disabled","progressPercentage":0,"averageRating":0.0,"totalReviews":0,"isDisabled":true}],"pagination":{"page":0,"size":100,"totalElements":13,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"counts":{"all":13,"available":3,"draft":0,"disabled":10}},"timestamp":"2026-08-10T19:09:37.565288Z"}
2026-08-10 19:09:35.273 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-protection-statements/my responded 200 in 6.6242 ms
2026-08-10 19:09:35.273 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:dca57def1765] HTTP GET /api/v1/business/commissions-protection-statements/my 200
Req: [no body] Res: {"success":true,"data":{"summary":{"totalNetCommission":0,"availablePotBalance":0,"commissionGrowthPercent":null,"commissionGrowthAmount":0,"statementsThisMonthCount":0,"statementsThisMonthDelta":0},"statements":{"content":[],"pagination":{"page":0,"size":10,"totalElements":0,"totalPages":0,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"message":"Your commissions retrieved successfully.","timestamp":"2026-08-10T19:09:35.2729431Z"}
2026-08-10 19:09:34.088 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/document-library/categories responded 200 in 87.7384 ms
2026-08-10 19:09:34.088 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:3cbdedbdd2d6] HTTP GET /api/v1/business/document-library/categories 200
Req: [no body] Res: {"success":true,"data":[{"id":3,"name":"Documents","iconId":1,"backgroundColor":"#22C55E","subCategoryCount":1,"fileCount":0,"designationIds":[],"createdAt":"2026-07-20T08:28:55.066834Z","effectiveDesignationIds":[]},{"id":2,"name":"Exam Zone","iconId":25,"backgroundColor":"#F97316","subCategoryCount":1,"fileCount":2,"designationIds":[],"createdAt":"2026-07-18T07:28:42.963623Z","effectiveDesignationIds":[379,380,381,382,383,384,385,386,387,388,389,390,391,392,435,436,717,774]},{"id":4,"name":"TESTING","iconId":25,"backgroundColor":"#22C55E","subCategoryCount":1,"fileCount":1,"designationIds":[],"createdAt":"2026-07-20T10:00:31.262855Z","effectiveDesignationIds":[379,387]},{"id":5,"name":"Whistle Blowing","iconId":24,"backgroundColor":"#F59E0B","subCategoryCount":0,"fileCount":0,"designationIds":[],"createdAt":"2026-07-21T11:18:43.118448Z","effectiveDesignationIds":[]}],"timestamp":"2026-08-10T19:09:34.0848872Z"}
2026-08-10 19:09:34.038 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/designations/lookup responded 200 in 22.8943 ms
2026-08-10 19:09:34.038 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ca18e0230b98] HTTP GET /api/v1/business/designations/lookup 200
Req: [no body] Res: {"success":true,"data":[{"id":379,"name":"Administrator"},{"id":381,"name":"Branch Admin"},{"id":384,"name":"Compliance Head"},{"id":380,"name":"Director"},{"id":774,"name":"Esm"},{"id":435,"name":"Financer"},{"id":717,"name":"Head Supervisor"},{"id":390,"name":"Mortgage Adviser"},{"id":386,"name":"Mortgage Compliance Officer"},{"id":389,"name":"Mortgage Manager"},{"id":383,"name":"Onboarding Admin"},{"id":382,"name":"Principal AR"},{"id":392,"name":"Professional Introducer"},{"id":391,"name":"Protection & Mortgage Adviser"},{"id":388,"name":"Protection Adviser"},{"id":385,"name":"Protection Compliance Officer"},{"id":387,"name":"Protection Manager"},{"id":436,"name":"TESTING DEMO"}],"timestamp":"2026-08-10T19:09:34.0360254Z"}
2026-08-10 19:09:34.036 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/document-library/icons responded 200 in 25.9604 ms
2026-08-10 19:09:34.036 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d351af73a0d4] HTTP GET /api/v1/business/document-library/icons 200
Req: [no body] Res: {"success":true,"data":[{"id":1,"key":"bank","name":"Bank","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.6325 2.15671C12.2219 2.01987 11.7781 2.01987 11.3675 2.15671L3.36754 4.82338C2.55086 5.09561 2 5.85988 2 6.72074V8.99998C2 10.1046 2.89543 11 4 11H5V16H4C2.89543 16 2 16.8954 2 18V20C2 21.1046 2.89543 22 4 22H20C21.1046 22 22 21.1046 22 20V18C22 16.8954 21.1046 16 20 16H19V11H20C21.1046 11 22 10.1046 22 8.99998V6.72074C22 5.85988 21.4491 5.09561 20.6325 4.82338L12.6325 2.15671ZM17 16V11H15V16H17ZM13 16V11H11V16H13ZM9 16V11H7V16H9ZM4 18V20H20V18H4ZM4 8.99998L4 6.72074L12 4.05408L20 6.72074V8.99998H4Z\" fill=\"white\"/></svg>"},{"id":2,"key":"data","name":"Data","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 6.82929C14.1652 6.41746 15 5.30622 15 4C15 2.34315 13.6569 1 12 1C10.3431 1 9 2.34315 9 4C9 5.30622 9.83481 6.41746 11 6.82929V11H7C4.79086 11 3 12.7909 3 15V17.1707C1.83481 17.5825 1 18.6938 1 20C1 21.6569 2.34315 23 4 23C5.65685 23 7 21.6569 7 20C7 18.6938 6.16519 17.5825 5 17.1707V15C5 13.8954 5.89543 13 7 13H11L11 17.1707C9.83481 17.5825 9 18.6938 9 20C9 21.6569 10.3431 23 12 23C13.6569 23 15 21.6569 15 20C15 18.6938 14.1652 17.5825 13 17.1707L13 13H17C18.1046 13 19 13.8954 19 15V17.1707C17.8348 17.5825 17 18.6938 17 20C17 21.6569 18.3431 23 20 23C21.6569 23 23 21.6569 23 20C23 18.6938 22.1652 17.5825 21 17.1707V15C21 12.7909 19.2091 11 17 11H13V6.82929ZM12 3C12.5523 3 13 3.44772 13 4C13 4.55228 12.5523 5 12 5C11.4477 5 11 4.55228 11 4C11 3.44772 11.4477 3 12 3ZM20 19C19.4477 19 19 19.4477 19 20C19 20.5523 19.4477 21 20 21C20.5523 21 21 20.5523 21 20C21 19.4477 20.5523 19 20 19ZM12 19C12.5523 19 13 19.4477 13 20C13 20.5523 12.5523 21 12 21C11.4477 21 11 20.5523 11 20C11 19.4477 11.4477 19 12 19ZM4 19C4.55228 19 5 19.4477 5 20C5 20.5523 4.55228 21 4 21C3.44772 21 3 20.5523 3 20C3 19.4477 3.44772 19 4 19Z\" fill=\"white\"/></svg>"},{"id":3,"key":"file","name":"File","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 12C7 11.4477 7.44772 11 8 11H16C16.5523 11 17 11.4477 17 12C17 12.5523 16.5523 13 16 13H8C7.44772 13 7 12.5523 7 12Z\" fill=\"white\"/><path d=\"M8 16C7.44772 16 7 16.4477 7 17C7 17.5523 7.44772 18 8 18H16C16.5523 18 17 17.5523 17 17C17 16.4477 16.5523 16 16 16H8Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 1C4.79086 1 3 2.79086 3 5V19C3 21.2091 4.79086 23 7 23H17C19.2091 23 21 21.2091 21 19V9.08615C21 8.1504 20.6719 7.24427 20.0729 6.52541L16.6678 2.43926C15.9078 1.52729 14.782 1 13.5949 1H7ZM5 5C5 3.89543 5.89543 3 7 3H13V6C13 8.20914 14.7909 10 17 10H19V19C19 20.1046 18.1046 21 17 21H7C5.89543 21 5 20.1046 5 19V5ZM18.6794 8C18.6359 7.93274 18.5882 7.86786 18.5364 7.80578L15.1313 3.71963C15.0897 3.66966 15.0458 3.622 15 3.57674V6C15 7.10457 15.8954 8 17 8H18.6794Z\" fill=\"white\"/></svg>"},{"id":4,"key":"file-cloud","name":"File Cloud","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 5C3 2.79086 4.79086 1 7 1H13.5949C14.782 1 15.9078 1.52729 16.6678 2.43926L20.0729 6.52541C20.6719 7.24427 21 8.1504 21 9.08615V19C21 21.2091 19.2091 23 17 23H10C9.44772 23 9 22.5523 9 22C9 21.4477 9.44772 21 10 21H17C18.1046 21 19 20.1046 19 19V10H17C14.7909 10 13 8.20914 13 6V3H7C5.89543 3 5 3.89543 5 5V14C5 14.5523 4.55228 15 4 15C3.44772 15 3 14.5523 3 14V5ZM18.5364 7.80578C18.5882 7.86786 18.6359 7.93274 18.6794 8H17C15.8954 8 15 7.10457 15 6V3.57674C15.0458 3.622 15.0897 3.66966 15.1313 3.71963L18.5364 7.80578Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.85 16C3.3373 16 2.06365 17.1338 1.91457 18.6195C1.36017 19.0694 1 19.7537 1 20.5294C1 21.9125 2.13805 23 3.5 23H6.2C7.72764 23 9 21.7808 9 20.2353C9 19.2002 8.42703 18.3101 7.59224 17.8365C7.15611 16.7524 6.0847 16 4.85 16ZM3.9 18.9118C3.9 18.4268 4.30657 18 4.85 18C5.32895 18 5.70661 18.3354 5.78458 18.7464C5.85263 19.105 6.11069 19.3981 6.45783 19.5109C6.78489 19.6173 7 19.9115 7 20.2353C7 20.6391 6.66059 21 6.2 21H3.5C3.2051 21 3 20.7707 3 20.5294C3 20.3474 3.11284 20.1751 3.29985 20.0978C3.72125 19.9238 3.97159 19.4868 3.90852 19.0352C3.90294 18.9953 3.9 18.9541 3.9 18.9118Z\" fill=\"white\"/></svg>"},{"id":5,"key":"globe-alt","name":"Globe","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 1C8.40056 1 5.20486 2.7299 3.1997 5.39942C1.81871 7.23797 1 9.52482 1 12C1 14.4752 1.81871 16.762 3.1997 18.6006C5.20486 21.2701 8.40056 23 12 23C15.5994 23 18.7951 21.2701 20.8003 18.6006C22.1813 16.762 23 14.4752 23 12C23 9.52482 22.1813 7.23797 20.8003 5.39942C18.7951 2.7299 15.5994 1 12 1ZM4.90148 6.9176C5.12565 6.89682 5.38969 6.87293 5.68444 6.84733C5.60258 8.06193 5.53095 9.49456 5.50782 11H3.05486C3.2194 9.50989 3.74743 8.13055 4.54856 6.95084C4.65102 6.94104 4.76929 6.92986 4.90148 6.9176ZM4.54856 17.0492C3.74743 15.8695 3.2194 14.4901 3.05486 13H5.50782C5.53095 14.5054 5.60258 15.9381 5.68444 17.1527C5.38969 17.1271 5.12565 17.1032 4.90148 17.0824C4.76929 17.0701 4.65102 17.059 4.54856 17.0492ZM7.50806 13C7.53297 14.5746 7.61241 16.0714 7.70023 17.3123C8.77446 17.3887 9.94229 17.4564 11 17.4852V13H7.50806ZM7.91935 19.8659C7.9254 19.9251 7.93118 19.9809 7.93664 20.0329C8.87517 20.5086 9.90816 20.8245 11 20.9451V19.4859C9.98757 19.4595 8.88779 19.3986 7.86654 19.3288C7.8846 19.5195 7.90151 19.6907 7.91673 19.8403C7.91761 19.8489 7.91848 19.8574 7.91935 19.8659ZM16.0634 20.0329C15.1248 20.5086 14.0918 20.8245 13 20.9451V19.4859C14.0124 19.4595 15.1122 19.3986 16.1335 19.3288C16.1154 19.5195 16.0985 19.6907 16.0833 19.8403C16.0763 19.9091 16.0696 19.9734 16.0634 20.0329ZM16.2998 17.3123C15.2255 17.3887 14.0577 17.4564 13 17.4852V13H16.4919C16.467 14.5746 16.3876 16.0714 16.2998 17.3123ZM16.2998 6.68766C16.3876 7.92861 16.467 9.42539 16.4919 11H13V6.51476C14.0577 6.5436 15.2255 6.61133 16.2998 6.68766ZM16.1335 4.67121C15.1122 4.60142 14.0124 4.54054 13 4.51407V3.05489C14.0918 3.17552 15.1248 3.49139 16.0634 3.96708C16.0696 4.02656 16.0763 4.09085 16.0833 4.15974C16.0985 4.30931 16.1154 4.48051 16.1335 4.67121ZM7.86654 4.67121C8.88779 4.60142 9.98757 4.54054 11 4.51407V3.05489C9.90816 3.17552 8.87517 3.49139 7.93664 3.96708C7.9304 4.02656 7.92375 4.09085 7.91673 4.15974C7.90151 4.30931 7.8846 4.48051 7.86654 4.67121ZM11 6.51476C9.94229 6.5436 8.77446 6.61133 7.70023 6.68766C7.61241 7.92861 7.53297 9.42539 7.50806 11H11V6.51476ZM19.0985 6.9176C18.8744 6.89682 18.6103 6.87293 18.3156 6.84733C18.3974 8.06193 18.4691 9.49456 18.4922 11H20.9451C20.7806 9.50989 20.2526 8.13055 19.4514 6.95084C19.349 6.94104 19.2307 6.92986 19.0985 6.9176ZM18.3156 17.1527C18.3974 15.9381 18.4691 14.5054 18.4922 13H20.9451C20.7806 14.4901 20.2526 15.8695 19.4514 17.0492C19.349 17.059 19.2307 17.0701 19.0985 17.0824C18.8744 17.1032 18.6103 17.1271 18.3156 17.1527Z\" fill=\"white\"/></svg>"},{"id":6,"key":"graduating-cap","name":"Graduating Cap","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.7726 2.54689C12.2976 2.26188 11.7041 2.26188 11.2291 2.54689L2.20091 7.96379C1.2299 8.5464 1.2299 9.95367 2.20091 10.5363L4.00083 11.6162V18.0158C4.00083 18.4537 4.19382 18.9004 4.58461 19.193C5.3458 19.7629 8.25205 21.75 12.0008 21.75C15.7496 21.75 18.6559 19.7629 19.4171 19.193C19.8078 18.9004 20.0008 18.4537 20.0008 18.0158V11.6162L21.8008 10.5363C22.7718 9.95367 22.7718 8.5464 21.8008 7.96379L12.7726 2.54689ZM3.94448 9.25003L12.0008 4.41622L20.0572 9.25003L16.6953 11.2672L13.0821 8.6863C12.6327 8.36529 12.0081 8.46938 11.6871 8.9188C11.3661 9.36821 11.4702 9.99276 11.9196 10.3138L14.8252 12.3892L12.0008 14.0838L3.94448 9.25003ZM15.0008 14.6162L12.7726 15.9532C12.2976 16.2382 11.7041 16.2382 11.2291 15.9532L6.00083 12.8162V17.7491C6.88349 18.3662 9.18516 19.75 12.0008 19.75C14.8165 19.75 17.1182 18.3662 18.0008 17.7491V12.8162L17.0008 13.4162V16C17.0008 16.5523 16.5531 17 16.0008 17C15.4485 17 15.0008 16.5523 15.0008 16V14.6162Z\" fill=\"white\"/></svg>"},{"id":7,"key":"grid","name":"Grid","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 11.5C2.61929 11.5 1.5 10.3807 1.5 9V4C1.5 2.61929 2.61929 1.5 4 1.5H9C10.3807 1.5 11.5 2.61929 11.5 4V9C11.5 10.3807 10.3807 11.5 9 11.5H4ZM3.5 9C3.5 9.27614 3.72386 9.5 4 9.5L9 9.5C9.27614 9.5 9.5 9.27614 9.5 9V4C9.5 3.72386 9.27614 3.5 9 3.5L4 3.5C3.72386 3.5 3.5 3.72386 3.5 4L3.5 9Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M1.5 20C1.5 21.3807 2.61929 22.5 4 22.5H9C10.3807 22.5 11.5 21.3807 11.5 20V15C11.5 13.6193 10.3807 12.5 9 12.5H4C2.61929 12.5 1.5 13.6193 1.5 15V20ZM4 20.5C3.72386 20.5 3.5 20.2761 3.5 20L3.5 15C3.5 14.7239 3.72386 14.5 4 14.5H9C9.27614 14.5 9.5 14.7239 9.5 15V20C9.5 20.2761 9.27614 20.5 9 20.5H4Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5 20C12.5 21.3807 13.6193 22.5 15 22.5H20C21.3807 22.5 22.5 21.3807 22.5 20V15C22.5 13.6193 21.3807 12.5 20 12.5H15C13.6193 12.5 12.5 13.6193 12.5 15V20ZM15 20.5C14.7239 20.5 14.5 20.2761 14.5 20V15C14.5 14.7239 14.7239 14.5 15 14.5H20C20.2761 14.5 20.5 14.7239 20.5 15V20C20.5 20.2761 20.2761 20.5 20 20.5H15Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5 9C12.5 10.3807 13.6193 11.5 15 11.5H20C21.3807 11.5 22.5 10.3807 22.5 9V4C22.5 2.61929 21.3807 1.5 20 1.5H15C13.6193 1.5 12.5 2.61929 12.5 4V9ZM15 9.5C14.7239 9.5 14.5 9.27614 14.5 9V4C14.5 3.72386 14.7239 3.5 15 3.5L20 3.5C20.2761 3.5 20.5 3.72386 20.5 4V9C20.5 9.27614 20.2761 9.5 20 9.5L15 9.5Z\" fill=\"white\"/></svg>"},{"id":8,"key":"info-triangle","name":"Info Triangle","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.2624 3.93164C13.8813 1.35615 10.1201 1.35615 8.73901 3.93164L2.42748 15.7051C1.11613 18.1513 2.96327 20.9997 5.6892 21H18.3122C21.0382 20.9997 22.8853 18.1513 21.574 15.7051L15.2624 3.93164ZM10.5017 4.87695C11.1286 3.70783 12.8728 3.70783 13.4997 4.87695L19.8113 16.6504C20.365 17.6838 19.6186 18.9998 18.3122 19H5.6892C4.38282 18.9998 3.63643 17.6838 4.19018 16.6504L10.5017 4.87695ZM13.0007 14C13.0007 14.5523 12.553 15 12.0007 15C11.4484 15 11.0007 14.5523 11.0007 14V7C11.0007 6.44772 11.4484 6 12.0007 6C12.553 6 13.0007 6.44772 13.0007 7V14ZM12.0007 18C11.3104 18 10.7507 17.4404 10.7507 16.75C10.7507 16.0596 11.3104 15.5 12.0007 15.5C12.6911 15.5 13.2507 16.0596 13.2507 16.75C13.2507 17.4404 12.6911 18 12.0007 18Z\" fill=\"white\"/></svg>"},{"id":9,"key":"layer","name":"Layers","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.5801 3.09845C11.8547 3.01817 12.1472 3.01825 12.4219 3.09845L12.5576 3.14533L21.2119 6.60724C22.4689 7.1102 22.4689 8.88944 21.2119 9.3924L19.6934 9.99884L21.2119 10.6072C22.4689 11.1102 22.4689 12.8894 21.2119 13.3924L19.6934 13.9988L21.2119 14.6072C22.4689 15.1102 22.4689 16.8894 21.2119 17.3924L12.5576 20.8543C12.2004 20.997 11.8016 20.9971 11.4443 20.8543L2.79004 17.3924C1.53357 16.8892 1.53348 15.1103 2.79004 14.6072L4.30762 13.9988L2.79004 13.3924C1.53357 12.8892 1.53348 11.1103 2.79004 10.6072L4.30762 9.99884L2.79004 9.3924C1.53357 8.88924 1.53348 7.11029 2.79004 6.60724L11.4443 3.14533L11.5801 3.09845ZM12.5576 16.8543C12.2004 16.997 11.8016 16.9971 11.4443 16.8543L7.00098 15.076L4.69239 15.9998L12.001 18.9227L19.3086 15.9998L17 15.076L12.5576 16.8543ZM12.5576 12.8543C12.2004 12.997 11.8016 12.9971 11.4443 12.8543L7.00098 11.076L4.69239 11.9998L12.001 14.9227L19.3086 11.9998L17 11.076L12.5576 12.8543ZM4.69239 7.99982L12.001 10.9227L19.3086 7.99982L12.001 5.07599L4.69239 7.99982Z\" fill=\"white\"/></svg>"},{"id":10,"key":"link","name":"Link","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.7786 4.22191C17.826 2.26929 14.6602 2.26929 12.7076 4.22191L9.87913 7.05034C9.48861 7.44086 9.48861 8.07403 9.87913 8.46455C10.2697 8.85508 10.9028 8.85508 11.2933 8.46455L14.1218 5.63613C15.2933 4.46455 17.1928 4.46455 18.3644 5.63613C19.536 6.8077 19.536 8.70719 18.3644 9.87877L15.536 12.7072C15.1455 13.0977 15.1455 13.7309 15.536 14.1214C15.9265 14.5119 16.5597 14.5119 16.9502 14.1214L19.7786 11.293C21.7312 9.34036 21.7312 6.17453 19.7786 4.22191Z\" fill=\"white\"/><path d=\"M14.1218 11.293C14.5123 10.9025 14.5123 10.2693 14.1218 9.87877C13.7312 9.48824 13.0981 9.48824 12.7076 9.87877L9.87913 12.7072C9.48861 13.0977 9.48861 13.7309 9.87913 14.1214C10.2697 14.5119 10.9028 14.5119 11.2933 14.1214L14.1218 11.293Z\" fill=\"white\"/><path d=\"M8.46492 11.293C8.85544 10.9025 8.85544 10.2693 8.46492 9.87877C8.07439 9.48824 7.44123 9.48824 7.05071 9.87877L4.22228 12.7072C2.26966 14.6598 2.26966 17.8256 4.22228 19.7783C6.1749 21.7309 9.34072 21.7309 11.2933 19.7783L14.1218 16.9498C14.5123 16.5593 14.5123 15.9261 14.1218 15.5356C13.7312 15.1451 13.0981 15.1451 12.7076 15.5356L9.87913 18.364C8.70756 19.5356 6.80806 19.5356 5.63649 18.364C4.46492 17.1925 4.46492 15.293 5.63649 14.1214L8.46492 11.293Z\" fill=\"white\"/></svg>"},{"id":11,"key":"lock","name":"Lock","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13 15C13 14.4477 12.5523 14 12 14C11.4477 14 11 14.4477 11 15V17C11 17.5523 11.4477 18 12 18C12.5523 18 13 17.5523 13 17V15Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 7C18 3.68629 15.3137 1 12 1C8.68629 1 6 3.68629 6 7V9C3.79086 9 2 10.7909 2 13V19C2 21.2091 3.79086 23 6 23H18C20.2091 23 22 21.2091 22 19V13C22 10.7909 20.2091 9 18 9V7ZM8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7V9H8V7ZM4 13C4 11.8954 4.89543 11 6 11H18C19.1046 11 20 11.8954 20 13V19C20 20.1046 19.1046 21 18 21H6C4.89543 21 4 20.1046 4 19V13Z\" fill=\"white\"/></svg>"},{"id":12,"key":"loudspeaker","name":"Loudspeaker","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M23 3.42942C23 2.04053 21.6191 1.07449 20.3144 1.5506L13.0165 4.21371L5.68817 4.78675C3.60632 4.94954 2 6.68638 2 8.77457V10.2254C2 12.3136 3.60633 14.0505 5.68817 14.2133L6.10077 14.2455L6.80448 20.3589C6.97774 21.864 8.25202 23 9.76707 23C11.5542 23 12.9401 21.4388 12.7282 19.6643L12.1375 14.7176L13.0165 14.7863L20.3144 17.4494C21.6191 17.9255 23 16.9595 23 15.5706V3.42942ZM5.84408 6.78066L12.2308 6.28125V12.7188L5.84409 12.2193C4.80316 12.1379 4 11.2695 4 10.2254V8.77457C4 7.73047 4.80316 6.86206 5.84408 6.78066ZM21 15.5706L14.2308 13.1004V5.89959L21 3.42942L21 15.5706ZM8.79136 20.1302L8.13226 14.4044L10.1043 14.5586L10.7423 19.9014C10.8121 20.4858 10.3557 21 9.76707 21C9.2681 21 8.84842 20.6259 8.79136 20.1302Z\" fill=\"white\"/></svg>"},{"id":13,"key":"mail","name":"Mail","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.0003 21C21.2094 21 23.0003 19.2091 23.0003 17V8.02268C23.0006 8.00739 23.0006 7.99206 23.0003 7.9767V7C23.0003 4.79086 21.2094 3 19.0003 3H5.00027C2.79113 3 1.00027 4.79086 1.00027 7V7.97671C0.999911 7.99206 0.999912 8.00739 1.00027 8.02268V17C1.00027 19.2091 2.79113 21 5.00027 21H19.0003ZM3.00027 17C3.00027 18.1046 3.8957 19 5.00027 19H19.0003C20.1048 19 21.0003 18.1046 21.0003 17V9.47703L13.4858 12.4828C12.5322 12.8643 11.4683 12.8643 10.5147 12.4828L3.00027 9.47703V17ZM12.743 10.6259L21.0003 7.32297V7C21.0003 5.89543 20.1048 5 19.0003 5H5.00027C3.8957 5 3.00027 5.89543 3.00027 7V7.32297L11.2575 10.6259C11.7343 10.8166 12.2662 10.8166 12.743 10.6259Z\" fill=\"white\"/></svg>"},{"id":14,"key":"map-marker","name":"Map Marker","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.0011 5.49999C9.51585 5.49999 7.50113 7.51471 7.50113 9.99999C7.50113 12.4853 9.51585 14.5 12.0011 14.5C14.4864 14.5 16.5011 12.4853 16.5011 9.99999C16.5011 7.51471 14.4864 5.49999 12.0011 5.49999ZM9.50113 9.99999C9.50113 8.61928 10.6204 7.49999 12.0011 7.49999C13.3818 7.49999 14.5011 8.61928 14.5011 9.99999C14.5011 11.3807 13.3818 12.5 12.0011 12.5C10.6204 12.5 9.50113 11.3807 9.50113 9.99999Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.81037 3.59198C10.3481 1.90017 13.6542 1.90017 16.1919 3.59198C19.6228 5.87924 20.586 10.495 18.3562 13.9635L14.5247 19.9237C13.3438 21.7607 10.6585 21.7607 9.47759 19.9237L5.64603 13.9635C3.41626 10.495 4.37948 5.87924 7.81037 3.59198ZM8.91977 5.25608C10.7857 4.01213 13.2166 4.01213 15.0825 5.25608C17.6051 6.93785 18.3134 10.3317 16.6739 12.882L12.8423 18.8422C12.4487 19.4546 11.5536 19.4546 11.16 18.8422L7.32839 12.882C5.68889 10.3317 6.39712 6.93785 8.91977 5.25608Z\" fill=\"white\"/></svg>"},{"id":15,"key":"money-2","name":"Money","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.09106 6.41666C4.54088 6.36853 4.05585 6.77552 4.00771 7.3257C3.95958 7.87589 4.36657 8.36092 4.91675 8.40905L6.90914 8.58336C7.45932 8.6315 7.94436 8.22451 7.99249 7.67433C8.04063 7.12414 7.63363 6.63911 7.08345 6.59098L5.09106 6.41666Z\" fill=\"white\"/><path d=\"M16.0077 8.3257C16.0558 7.77552 16.5409 7.36853 17.0911 7.41666L19.0835 7.59098C19.6336 7.63911 20.0406 8.12414 19.9925 8.67433C19.9444 9.22451 19.4593 9.6315 18.9091 9.58336L16.9168 9.40905C16.3666 9.36092 15.9596 8.87589 16.0077 8.3257Z\" fill=\"white\"/><path d=\"M5.09106 15.0038C4.54088 14.9557 4.05585 15.3627 4.00771 15.9129C3.95958 16.463 4.36657 16.9481 4.91675 16.9962L6.90914 17.1705C7.45932 17.2187 7.94436 16.8117 7.99249 16.2615C8.04063 15.7113 7.63363 15.2263 7.08345 15.1781L5.09106 15.0038Z\" fill=\"white\"/><path d=\"M16.0077 17.3257C16.0558 16.7755 16.5409 16.3685 17.0911 16.4167L19.0835 16.591C19.6336 16.6391 20.0406 17.1241 19.9925 17.6743C19.9444 18.2245 19.4593 18.6315 18.9091 18.5834L16.9168 18.4091C16.3666 18.3609 15.9596 17.8759 16.0077 17.3257Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 9.00002C13.6569 9.00002 15 10.3432 15 12C15 13.6569 13.6569 15 12 15C10.3431 15 9 13.6569 9 12C9 10.3432 10.3431 9.00002 12 9.00002ZM13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.24433 3.24161C2.9311 3.04306 1 4.8759 1 7.16864V15.1597C1 17.2848 2.65497 19.0305 4.74824 19.2067C5.60626 19.2789 6.65879 19.3733 7.90243 19.4952C8.12536 19.5171 8.62104 19.6182 9.33769 19.784C9.80886 19.8929 10.3392 20.0209 10.8964 20.1554C11.1591 20.2189 11.4286 20.2839 11.6998 20.3489C12.5391 20.5499 13.3972 20.7507 14.1357 20.9018C14.8428 21.0465 15.5356 21.1667 15.9958 21.1687C17.1394 21.1735 18.2579 21.1519 19.2151 21.1227C21.3562 21.0574 23 19.2885 23 17.1812V9.19283C23 6.88041 21.0564 5.0729 18.7836 5.13432C17.931 5.15737 16.9751 5.17281 16.0042 5.16871C15.7734 5.16773 15.2712 5.09269 14.5366 4.94238C13.8335 4.79849 13.0034 4.60455 12.1657 4.40389C11.9033 4.34103 11.6395 4.27736 11.3793 4.21453L11.3782 4.21429C10.8155 4.07845 10.269 3.94653 9.78829 3.83537C9.10812 3.67808 8.47589 3.54188 8.09757 3.50479C6.99864 3.39705 6.04679 3.31049 5.24433 3.24161ZM3 7.16864C3 6.01886 3.95662 5.13844 5.07329 5.23428C5.86777 5.30248 6.81158 5.3883 7.90243 5.49525C8.12536 5.5171 8.62104 5.61823 9.33769 5.78395C9.80894 5.89293 10.3394 6.02098 10.8967 6.15551C11.1596 6.21896 11.4284 6.28385 11.6998 6.34886C12.5391 6.5499 13.3972 6.75066 14.1357 6.90178C14.8428 7.04647 15.5356 7.16674 15.9958 7.16869C16.9924 7.17291 17.9697 7.15705 18.8377 7.13359C20.0241 7.10153 21 8.04472 21 9.19283V17.1812C21 18.2426 20.1803 19.0924 19.1541 19.1237C18.2131 19.1524 17.1187 19.1734 16.0042 19.1687C15.7734 19.1677 15.2712 19.0927 14.5366 18.9424C13.8335 18.7985 13.0034 18.6046 12.1657 18.4039C11.903 18.341 11.639 18.2772 11.3784 18.2143C10.8156 18.0785 10.269 17.9465 9.7883 17.8354C9.10812 17.6781 8.47589 17.5419 8.09757 17.5048C6.84472 17.382 5.78303 17.2867 4.91593 17.2137C3.83407 17.1227 3 16.2209 3 15.1597V7.16864Z\" fill=\"white\"/></svg>"},{"id":16,"key":"paper-clip","name":"Paper Clip","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.3914 7.40388C16.1724 6.62283 17.4388 6.62283 18.2198 7.40388C19.0009 8.18493 19.0009 9.45126 18.2198 10.2323L10.7952 17.6569C9.42835 19.0238 7.21227 19.0238 5.84544 17.6569C4.4786 16.2901 4.4786 14.074 5.84544 12.7072L13.164 5.38863C13.5545 4.9981 13.5545 4.36494 13.164 3.97441C12.7735 3.58389 12.1403 3.58389 11.7498 3.97441L4.43123 11.293C2.28334 13.4409 2.28334 16.9233 4.43122 19.0711C6.57911 21.219 10.0615 21.219 12.2094 19.0711L19.634 11.6465C21.1961 10.0844 21.1961 7.55176 19.634 5.98967C18.0719 4.42757 15.5393 4.42757 13.9772 5.98967L6.34041 13.6264C5.3641 14.6027 5.3641 16.1856 6.34041 17.162C7.31672 18.1383 8.89964 18.1383 9.87595 17.162L17.4066 9.63127C17.7972 9.24074 17.7972 8.60758 17.4066 8.21705C17.0161 7.82653 16.3829 7.82653 15.9924 8.21705L8.46173 15.7477C8.26647 15.943 7.94989 15.943 7.75463 15.7477C7.55936 15.5525 7.55936 15.2359 7.75463 15.0406L15.3914 7.40388Z\" fill=\"white\"/></svg>"},{"id":17,"key":"pie-chart","name":"Pie Chart","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.1382 1.0805C14.893 0.902936 14 1.94051 14 3.00002V8.00002C14 9.10459 14.8954 10 16 10H21C22.0595 10 23.0971 9.10699 22.9195 7.86181C22.4192 4.35355 19.6465 1.58078 16.1382 1.0805ZM16 3.00002C15.9992 3.00286 15.9961 3.01068 15.9848 3.02146C15.9751 3.03073 15.9577 3.0434 15.9314 3.05231C15.9034 3.0618 15.8758 3.06332 15.8559 3.06047C15.9041 3.06735 15.9521 3.0748 16 3.08282V8.00002H20.9172C20.9252 8.04788 20.9327 8.09593 20.9396 8.14416C20.9367 8.12417 20.9382 8.09663 20.9477 8.06862C20.9566 8.04231 20.9693 8.02491 20.9786 8.01522C20.9893 8.00396 20.9972 8.00092 21 8.00017L20.9172 8.00002C20.4963 5.48829 18.5117 3.50377 16 3.08282V3.00002Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13 4.00002C13 2.92868 12.1066 1.92674 10.8919 2.06081C5.89004 2.61283 2 6.85146 2 12C2 17.5229 6.47715 22 12 22C17.1486 22 21.3872 18.11 21.9392 13.1081C22.0733 11.8934 21.0713 11 20 11H15C13.8954 11 13 10.1046 13 9.00002V4.00002ZM4 12C4 7.92065 7.05414 4.55327 11 4.06181V9.00002C11 11.2092 12.7909 13 15 13H19.9382C19.4467 16.9459 16.0794 20 12 20C7.58172 20 4 16.4183 4 12Z\" fill=\"white\"/></svg>"},{"id":18,"key":"pin-alt","name":"Pin","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.9486 2.47382C13.0354 1.36925 10.5891 2.02475 9.48449 3.93792L7.43866 7.48142C7.24123 7.82337 6.94701 8.09923 6.59306 8.27424L5.07165 9.02649C3.28176 9.9115 3.20049 12.4342 4.92972 13.4326L8.56458 15.5312L5.31464 21.1602C5.0385 21.6385 5.20237 22.2501 5.68067 22.5263C6.15896 22.8024 6.77055 22.6385 7.04669 22.1602L10.2966 16.5312L13.9316 18.6298C15.6608 19.6282 17.8049 18.2964 17.6764 16.3038L17.5672 14.6101C17.5417 14.2161 17.6335 13.8234 17.831 13.4814L19.8768 9.93792C20.9814 8.02475 20.3259 5.57839 18.4127 4.47382L14.9486 2.47382ZM10.4439 14.3068L14.9316 16.8978C15.2774 17.0974 15.7062 16.8311 15.6805 16.4326L15.5713 14.7389C15.5205 13.9508 15.7041 13.1653 16.0989 12.4814L18.1447 8.93792C18.697 7.98134 18.3693 6.75816 17.4127 6.20587L13.9486 4.20587C12.992 3.65359 11.7688 3.98134 11.2165 4.93792L9.17071 8.48142C8.77586 9.16532 8.18741 9.71704 7.47951 10.0671L5.95811 10.8193C5.60012 10.9963 5.58387 11.5009 5.92972 11.7005L10.4173 14.2915C10.4218 14.2939 10.4262 14.2965 10.4307 14.299C10.4351 14.3016 10.4395 14.3042 10.4439 14.3068Z\" fill=\"white\"/></svg>"},{"id":21,"key":"sim","name":"SIM","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.5 6C7.94772 6 7.5 6.44772 7.5 7C7.5 7.55228 7.94772 8 8.5 8H14.5C15.0523 8 15.5 7.55228 15.5 7C15.5 6.44772 15.0523 6 14.5 6H8.5Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 2C4.79086 2 3 3.79086 3 6V18C3 20.2091 4.79086 22 7 22H17C19.2091 22 21 20.2091 21 18V8.7997C21 7.69406 20.5424 6.63774 19.7358 5.88155L16.7494 3.08185C16.008 2.3868 15.0299 2 14.0137 2H7ZM5 6C5 4.89543 5.89543 4 7 4H14.0137C14.5218 4 15.0108 4.1934 15.3815 4.54093L18.3679 7.34062C18.7712 7.71872 19 8.24688 19 8.7997V18C19 19.1046 18.1046 20 17 20H7C5.89543 20 5 19.1046 5 18V6Z\" fill=\"white\"/></svg>"},{"id":19,"key":"server","name":"Server","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15 6.5C14.4477 6.5 14 6.94772 14 7.5C14 8.05228 14.4477 8.5 15 8.5H19.5C20.0523 8.5 20.5 8.05228 20.5 7.5C20.5 6.94772 20.0523 6.5 19.5 6.5H15Z\" fill=\"white\"/><path d=\"M9.5 7.5C9.5 6.94772 9.94771 6.5 10.5 6.5H12.5C13.0523 6.5 13.5 6.94772 13.5 7.5C13.5 8.05228 13.0523 8.5 12.5 8.5H10.5C9.94771 8.5 9.5 8.05228 9.5 7.5Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 3.5C2.79086 3.5 1 5.29086 1 7.5C1 9.70914 2.79086 11.5 5 11.5H19C21.2091 11.5 23 9.70914 23 7.5C23 5.29086 21.2091 3.5 19 3.5H5ZM19 5.5C20.1046 5.5 21 6.39543 21 7.5C21 8.60457 20.1046 9.5 19 9.5H5C3.89543 9.5 3 8.60457 3 7.5C3 6.39543 3.89543 5.5 5 5.5H19Z\" fill=\"white\"/><path d=\"M14 16.5C14 15.9477 14.4477 15.5 15 15.5H19.5C20.0523 15.5 20.5 15.9477 20.5 16.5C20.5 17.0523 20.0523 17.5 19.5 17.5H15C14.4477 17.5 14 17.0523 14 16.5Z\" fill=\"white\"/><path d=\"M10.5 15.5C9.94771 15.5 9.5 15.9477 9.5 16.5C9.5 17.0523 9.94771 17.5 10.5 17.5H12.5C13.0523 17.5 13.5 17.0523 13.5 16.5C13.5 15.9477 13.0523 15.5 12.5 15.5H10.5Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5 12.5C2.79086 12.5 1 14.2909 1 16.5C1 18.7091 2.79086 20.5 5 20.5H19C21.2091 20.5 23 18.7091 23 16.5C23 14.2909 21.2091 12.5 19 12.5H5ZM19 14.5C20.1046 14.5 21 15.3954 21 16.5C21 17.6046 20.1046 18.5 19 18.5H5C3.89543 18.5 3 17.6046 3 16.5C3 15.3954 3.89543 14.5 5 14.5H19Z\" fill=\"white\"/></svg>"},{"id":20,"key":"shield-tick","name":"Shield Tick","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.6961 11.2071C15.0866 10.8166 15.0866 10.1834 14.6961 9.79287C14.3056 9.40234 13.6724 9.40234 13.2819 9.79286L11.3431 11.7316L11.0613 11.4497C10.6707 11.0592 10.0376 11.0592 9.64705 11.4497C9.25652 11.8402 9.25652 12.4734 9.64705 12.8639L10.636 13.8529C11.0266 14.2434 11.6597 14.2434 12.0503 13.8529L14.6961 11.2071Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.4876 2.01874C12.5328 1.63617 11.4672 1.63617 10.5124 2.01874L6.88578 3.47172C6.87451 3.47624 6.86331 3.48096 6.8522 3.48589L5.30467 4.17237C3.94745 4.77443 2.99987 6.10003 3 7.64368C3.00017 9.6109 3.14199 12.9406 4.06685 15.2252C4.6818 16.7443 5.78937 18.0609 6.91503 19.1131C8.04877 20.1728 9.25663 21.0157 10.1451 21.5766C11.2836 22.2955 12.7164 22.2955 13.8549 21.5766C14.7434 21.0157 15.9512 20.1728 17.085 19.1131C18.2106 18.0609 19.3182 16.7443 19.9332 15.2252C20.858 12.9406 20.9998 9.6109 21 7.64368C21.0001 6.10003 20.0525 4.77443 18.6953 4.17237L17.1478 3.48589C17.1367 3.48096 17.1255 3.47624 17.1142 3.47172L13.4876 2.01874ZM11.2562 3.87527C11.7336 3.68399 12.2664 3.68399 12.7438 3.87527L16.3535 5.32148L17.8843 6.00057C18.5732 6.30612 19.0001 6.94886 19 7.64351C18.9998 9.62433 18.8415 12.5918 18.0793 14.4748C17.6173 15.6159 16.7387 16.6991 15.7193 17.652C14.7079 18.5974 13.6116 19.365 12.7871 19.8856C12.3009 20.1926 11.6991 20.1926 11.2129 19.8856C10.3884 19.365 9.29215 18.5974 8.28075 17.652C7.26127 16.6991 6.38268 15.6159 5.9207 14.4748C5.15846 12.5918 5.00017 9.62433 5 7.64351C4.99994 6.94886 5.42684 6.30612 6.11565 6.00057L7.64653 5.32148L11.2562 3.87527Z\" fill=\"white\"/></svg>"},{"id":22,"key":"suitcase","name":"Suitcase","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13 9.72222C13 9.16994 12.5523 8.72222 12 8.72222C11.4477 8.72222 11 9.16994 11 9.72222V10.6111C11 11.1634 11.4477 11.6111 12 11.6111C12.5523 11.6111 13 11.1634 13 10.6111V9.72222Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.9333 3C14.6117 3 16.0267 4.12766 16.462 5.66667H18.7778C20.5574 5.66667 22 7.10931 22 8.88889V10.2111C22 10.9233 21.6082 11.5439 21.0284 11.8693L20.4681 17.4029C20.2612 19.4456 18.5415 21 16.4884 21H7.51159C5.45848 21 3.73876 19.4456 3.53193 17.4029L2.97165 11.8693C2.39182 11.5439 2 10.9233 2 10.2111V8.88889C2 7.1093 3.44264 5.66667 5.22222 5.66667H7.53802C7.97331 4.12766 9.3883 3 11.0667 3H12.9333ZM9.73321 5.66667C10.0373 5.26185 10.5214 5 11.0667 5H12.9333C13.4786 5 13.9627 5.26185 14.2668 5.66667H9.73321ZM4 8.88889C4 8.21387 4.54721 7.66667 5.22222 7.66667H18.7778C19.4528 7.66667 20 8.21387 20 8.88889V10.116C19.9059 10.1254 19.8156 10.1478 19.731 10.1814L13.0569 12.6533C12.8346 12.7356 12.5994 12.7778 12.3623 12.7778H11.6377C11.4006 12.7778 11.1654 12.7356 10.9431 12.6533L4.26897 10.1814C4.18437 10.1478 4.09411 10.1254 4 10.116V8.88889ZM13.7515 14.5288L18.9436 12.6058L18.4782 17.2015C18.3748 18.2228 17.515 19 16.4884 19H7.51159C6.48503 19 5.62517 18.2228 5.52176 17.2015L5.05645 12.6058L10.2485 14.5288C10.6931 14.6935 11.1635 14.7778 11.6377 14.7778H12.3623C12.8365 14.7778 13.3069 14.6935 13.7515 14.5288Z\" fill=\"white\"/></svg>"},{"id":24,"key":"user-tick","name":"User Tick","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7 7C7 4.23858 9.23858 2 12 2C14.7614 2 17 4.23858 17 7C17 9.76142 14.7614 12 12 12C9.23858 12 7 9.76142 7 7ZM12 4C10.3431 4 9 5.34315 9 7C9 8.65685 10.3431 10 12 10C13.6569 10 15 8.65685 15 7C15 5.34315 13.6569 4 12 4Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.55543 21.9174C8.22982 22.6502 10.4595 23 12 23C13.5405 23 15.7702 22.6502 17.4446 21.9174C18.2666 21.5576 19.1025 21.0427 19.5882 20.2974C19.8437 19.9054 20.0052 19.4437 19.9999 18.9282C19.9946 18.4174 19.8266 17.9281 19.5441 17.4728C18.1747 15.2656 15.3732 13 12 13C8.62679 13 5.82532 15.2656 4.45591 17.4728C4.17344 17.9281 4.00537 18.4174 4.00013 18.9282C3.99483 19.4437 4.15632 19.9054 4.41175 20.2974C4.89745 21.0427 5.73343 21.5576 6.55543 21.9174ZM6.00002 18.9487C6.00077 18.8757 6.02372 18.7394 6.15539 18.5272C7.27754 16.7185 9.51566 15 12 15C14.4843 15 16.7225 16.7185 17.8446 18.5272C17.9763 18.7394 17.9992 18.8757 18 18.9487C18.0007 19.017 17.9831 19.0973 17.9126 19.2055C17.7465 19.4605 17.3429 19.7787 16.6427 20.0852C15.2726 20.6848 13.3268 21 12 21C10.6732 21 8.72744 20.6848 7.35732 20.0852C6.65707 19.7787 6.25354 19.4605 6.08736 19.2055C6.01686 19.0973 5.99932 19.017 6.00002 18.9487Z\" fill=\"white\"/><path d=\"M22.6961 4.20709C23.0866 3.81657 23.0866 3.1834 22.6961 2.79288C22.3056 2.40235 21.6724 2.40235 21.2819 2.79288L19.3431 4.73161L19.0613 4.44973C18.6707 4.0592 18.0376 4.0592 17.647 4.44973C17.2565 4.84025 17.2565 5.47342 17.647 5.86394L18.636 6.85293C19.0266 7.24345 19.6597 7.24346 20.0503 6.85293L22.6961 4.20709Z\" fill=\"white\"/></svg>"},{"id":23,"key":"users","name":"Users","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M13.9992 3C10.6855 3 7.99916 5.68629 7.99916 9C7.99916 12.3137 10.6855 15 13.9992 15C17.3129 15 19.9992 12.3137 19.9992 9C19.9992 5.68629 17.3129 3 13.9992 3ZM9.99916 9C9.99916 6.79086 11.79 5 13.9992 5C16.2083 5 17.9992 6.79086 17.9992 9C17.9992 11.2091 16.2083 13 13.9992 13C11.79 13 9.99916 11.2091 9.99916 9Z\" fill=\"white\"/><path d=\"M8.15456 20.5272C7.8634 20.9965 7.24692 21.1409 6.77762 20.8497C6.30832 20.5586 6.16392 19.9421 6.45509 19.4728C7.82449 17.2656 10.626 15 13.9992 15C17.3724 15 20.1739 17.2656 21.5433 19.4728C21.8344 19.9421 21.69 20.5586 21.2207 20.8497C20.7514 21.1409 20.1349 20.9965 19.8438 20.5272C18.7216 18.7185 16.4835 17 13.9992 17C11.5148 17 9.27671 18.7185 8.15456 20.5272Z\" fill=\"white\"/><path d=\"M7.89702 6.55972C8.14018 7.05559 7.93532 7.6547 7.43944 7.89786C6.53078 8.34344 5.99916 9.15179 5.99916 10C5.99916 10.8482 6.53078 11.6566 7.43944 12.1021C7.93532 12.3453 8.14018 12.9444 7.89702 13.4403C7.65386 13.9362 7.05475 14.141 6.55888 13.8979C5.08207 13.1737 3.99916 11.7335 3.99916 10C3.99916 8.26647 5.08207 6.82632 6.55888 6.10214C7.05475 5.85898 7.65386 6.06384 7.89702 6.55972Z\" fill=\"white\"/><path d=\"M4.15456 20.5272C3.8634 20.9965 3.24692 21.1409 2.77762 20.8497C2.30832 20.5586 2.16392 19.9421 2.45509 19.4728C3.03418 18.5394 3.96072 17.7604 4.9944 17.1559C5.47116 16.8772 6.08364 17.0377 6.36242 17.5144C6.6412 17.9912 6.48071 18.6037 6.00395 18.8824C5.14024 19.3875 4.50477 19.9627 4.15456 20.5272Z\" fill=\"white\"/></svg>"},{"id":25,"key":"verified","name":"Verified","svg":"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.4412 9.90267C16.8033 9.54183 16.7944 8.96541 16.4213 8.61519C16.0482 8.26498 15.4522 8.2736 15.0901 8.63444L10.2835 13.4241L8.90993 12.0553C8.54782 11.6945 7.95183 11.6859 7.57873 12.0361C7.20564 12.3863 7.19673 12.9627 7.55884 13.3236L9.60799 15.3656C9.78527 15.5422 10.029 15.6419 10.2835 15.6419C10.5381 15.6419 10.7818 15.5422 10.9591 15.3656L16.4412 9.90267Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M14.3552 2.92149C13.042 1.69284 10.958 1.69284 9.64479 2.92149C9.31125 3.23356 8.84747 3.3793 8.38797 3.31644C6.57887 3.06896 4.89283 4.2537 4.57715 5.99422C4.49697 6.4363 4.21034 6.81785 3.80039 7.02822C2.18639 7.85643 1.54238 9.77339 2.34479 11.361C2.54859 11.7642 2.54859 12.2358 2.34479 12.639C1.54238 14.2266 2.1864 16.1436 3.80039 16.9718C4.21034 17.1821 4.49697 17.5637 4.57715 18.0058C4.89283 19.7463 6.57887 20.931 8.38797 20.6836C8.84747 20.6207 9.31125 20.7664 9.64479 21.0785C10.958 22.3072 13.042 22.3072 14.3552 21.0785C14.6888 20.7664 15.1525 20.6207 15.612 20.6836C17.4211 20.931 19.1072 19.7463 19.4229 18.0058C19.503 17.5637 19.7897 17.1821 20.1996 16.9718C21.8136 16.1436 22.4576 14.2266 21.6552 12.639C21.4514 12.2358 21.4514 11.7642 21.6552 11.361C22.4576 9.77339 21.8136 7.85643 20.1996 7.02822C19.7897 6.81785 19.503 6.4363 19.4229 5.99422C19.1072 4.2537 17.4211 3.06896 15.612 3.31644C15.1525 3.3793 14.6888 3.23356 14.3552 2.92149ZM10.9539 4.23026C11.5372 3.68453 12.4628 3.68453 13.0461 4.23026C13.797 4.93285 14.8412 5.26098 15.8757 5.11946C16.6793 5.00953 17.4281 5.53576 17.5684 6.30884C17.7489 7.30414 18.3942 8.16318 19.3172 8.63679C20.034 9.00465 20.3201 9.8561 19.9637 10.5612C19.5048 11.4691 19.5048 12.5309 19.9637 13.4388C20.3201 14.1439 20.034 14.9953 19.3172 15.3632C18.3942 15.8368 17.7489 16.6959 17.5684 17.6912C17.4281 18.4642 16.6793 18.9905 15.8757 18.8805C14.8412 18.739 13.797 19.0671 13.0461 19.7697C12.4628 20.3155 11.5372 20.3155 10.9539 19.7697C10.203 19.0671 9.1588 18.739 8.12428 18.8805C7.32074 18.9905 6.57186 18.4642 6.43164 17.6912C6.25112 16.6959 5.6058 15.8368 4.68284 15.3632C3.96596 14.9953 3.67991 14.1439 4.03631 13.4388C4.49516 12.5309 4.49516 11.4691 4.03631 10.5612C3.67991 9.8561 3.96596 9.00465 4.68284 8.63679C5.6058 8.16318 6.25112 7.30414 6.43164 6.30884C6.57186 5.53576 7.32074 5.00953 8.12428 5.11946C9.1588 5.26098 10.203 4.93285 10.9539 4.23026Z\" fill=\"white\"/></svg>"}],"timestamp":"2026-08-10T19:09:34.0330777Z"}
2026-08-10 19:09:32.226 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/dashboard/stats responded 200 in 6.8077 ms
2026-08-10 19:09:32.226 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7128bcea9bc8] HTTP GET /api/v1/business/dashboard/stats 200
Req: [no body] Res: {"success":true,"data":{"totalClients":150,"casesByProductType":[{"productType":"PersonalProtection","count":123},{"productType":"GeneralInsurance","count":22},{"productType":"PrivateMedicalInsurance","count":18},{"productType":"Mortgages","count":73},{"productType":"BusinessProtection","count":35}],"usersByStatus":[{"status":"Rejected","count":1},{"status":"OnboardingReview","count":2},{"status":"Initiated","count":21},{"status":"InProgress","count":9},{"status":"Approved","count":81}],"usersByDesignation":[{"designation":"Administrator","count":1},{"designation":"Branch Admin","count":16},{"designation":"Compliance Head","count":6},{"designation":"Director","count":14},{"designation":"Mortgage Adviser","count":7},{"designation":"Mortgage Compliance Officer","count":4},{"designation":"Mortgage Manager","count":7},{"designation":"Onboarding Admin","count":13},{"designation":"Principal AR","count":12},{"designation":"Professional Introducer","count":9},{"designation":"Protection & Mortgage Adviser","count":9},{"designation":"Protection Adviser","count":5},{"designation":"Protection Compliance Officer","count":5},{"designation":"Protection Manager","count":7}]},"timestamp":"2026-08-10T19:09:32.2260967Z"}
2026-08-10 19:09:32.188 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /hubs/notifications/negotiate responded 200 in 1.5936 ms
2026-08-10 19:09:32.187 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/dashboard/overview responded 200 in 20.3671 ms
2026-08-10 19:09:32.187 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:421aabbe5c1f] HTTP GET /api/v1/business/dashboard/overview 200
Req: [no body] Res: {"success":true,"data":{"stats":{"totalCases":{"count":271,"trendPercent":25.8},"totalClients":{"count":150,"trendPercent":-27.6},"totalUsers":{"count":115,"trendPercent":242.3},"totalBranches":{"count":10,"trendPercent":133.3},"totalArCompanies":{"count":4,"trendPercent":0},"totalCommission":{"amount":2400.00,"trendPercent":null}},"casesByStatus":[{"name":"Cancelled","count":2},{"name":"Contracts Exchanged","count":1},{"name":"Declined","count":1},{"name":"Deferred","count":1},{"name":"Lapsed","count":1},{"name":"Live","count":16},{"name":"Matured","count":3},{"name":"NTU","count":3},{"name":"New Case","count":229},{"name":"Pending","count":3},{"name":"Pre Offer Processing","count":1},{"name":"Remortgage","count":4},{"name":"Underwriting","count":3},{"name":"Valuation Received Approved","count":3}],"casesOverTime":{"months":["2026-03","2026-04","2026-05","2026-06","2026-07","2026-08"],"series":[{"productType":"PersonalProtection","counts":[0,0,0,24,72,27]},{"productType":"BusinessProtection","counts":[0,0,0,9,18,8]},{"productType":"GeneralInsurance","counts":[0,0,0,5,12,5]},{"productType":"PrivateMedicalInsurance","counts":[0,0,0,1,11,6]},{"productType":"Mortgages","counts":[0,0,0,3,62,8]}]},"usersByApplicationStatus":[{"name":"Rejected","count":1},{"name":"OnboardingReview","count":2},{"name":"Initiated","count":21},{"name":"InProgress","count":9},{"name":"Approved","count":81}],"recentCases":[{"id":339,"userFacingCaseId":"CASE-0271","clientName":"Thanos Legend","statusName":"New Case","createdAt":"2026-08-10T14:36:37.691703Z"},{"id":338,"userFacingCaseId":"CASE-0270","clientName":"Thanos Legend","statusName":"New Case","createdAt":"2026-08-10T14:13:48.935135Z"},{"id":337,"userFacingCaseId":"CASE-0269","clientName":"Prajwal Pal Singh","statusName":"New Case","createdAt":"2026-08-10T13:52:30.902751Z"},{"id":336,"userFacingCaseId":"CASE-0268","clientName":"Monika Shaw","statusName":"New Case","createdAt":"2026-08-10T12:48:16.582476Z"},{"id":334,"userFacingCaseId":"CASE-0267","clientName":"Living Stone","statusName":"New Case","createdAt":"2026-08-07T11:57:58.871924Z"}],"recentClients":[{"id":203,"fullName":"Monika Shaw","email":"rajarao+mrs@wealthmax.io.uk","source":"Events","status":"Interested","createdAt":"2026-08-10T11:06:01.629716Z"},{"id":202,"fullName":"Gagan Gagan","email":"gagan.deep+5556666@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-06T07:59:19.78937Z"},{"id":201,"fullName":"Gagan Gagan","email":"gagan.deep+1066@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-05T12:01:08.606974Z"},{"id":200,"fullName":"Thanos Legend","email":"Thanos@wealthmax.co.uk","source":null,"status":"NewClient","createdAt":"2026-08-05T11:44:51.790118Z"},{"id":199,"fullName":"Monalisa Eva","email":"rajarao+1mons1@wealthmax.co.uk","source":"Website","status":"Engaging","createdAt":"2026-08-05T11:02:26.474189Z"}],"branches":[{"id":5,"name":"Wealthmax Financial Advisers Ltd.","city":"BRENTFORD","userCount":73,"isHq":true,"isActive":true},{"id":16,"name":"BRANCH TESTING","city":"BRENTFORD","userCount":12,"isHq":false,"isActive":true},{"id":17,"name":"JP Morgan","city":"BRENTFORD","userCount":10,"isHq":false,"isActive":true},{"id":7,"name":"Tetsing Branch","city":"BRENTFORD","userCount":8,"isHq":false,"isActive":true},{"id":13,"name":"Testing Branch","city":"BRENTFORD","userCount":6,"isHq":false,"isActive":true}],"arCompanies":[{"id":12,"name":"AR1","code":"AR-0004","branchName":"Wealthmax Financial Advisers Ltd.","isActive":true},{"id":10,"name":"TESTINNG ARR","code":"AR-0003","branchName":"BRANCH TESTING","isActive":true},{"id":2,"name":"YYYYY","code":"AR-0002","branchName":"Wealthmax Financial Advisers Ltd.","isActive":true},{"id":1,"name":"Gagan","code":"AR-0001","branchName":"Wealthmax Financial Advisers Ltd.","isActive":false}]},"timestamp":"2026-08-10T19:09:32.186948Z"}
2026-08-10 19:09:32.170 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/me responded 200 in 12.7953 ms
2026-08-10 19:09:32.170 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:37b130500df7] HTTP GET /api/v1/business/me 200
Req: [no body] Res: {"success":true,"data":{"id":656,"userFacingId":"","email":"anmol.b@wealthmax.co.uk","firstName":"Anmol Kaur","lastName":"Bhatti","mobileNumber":"+44 6586384768","userOnboardingStep":null,"tenantId":28,"tenantCompanyName":"Wealthmax Financial Advisers Ltd.","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":190,"departmentName":"Management","designationId":379,"designationName":"Administrator","roles":[{"role_id":406,"role_name":"Admin","system_role_key":"Admin"}],"primaryColor":"#4F46E5","secondaryColor":"#EA580C","permissions":{"permissions":{"user_management":{"user_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"application_form_user_fills":{"is_parent":false,"permissions":["view","edit","approve"]},"user_profile":{"is_parent":false,"permissions":["view","edit","delete","approve"]}},"branch_management":{"branch_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"branch_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"my_tenant":{"company_details":{"is_parent":true,"permissions":["view","edit"]},"branding":{"is_parent":false,"permissions":["view","edit"]},"documents":{"is_parent":false,"permissions":["view","create","edit"]}},"ar_management":{"ar_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"ar_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"cpd":{"my_cpd":{"is_parent":true,"permissions":["view","create","edit","delete","export"]},"team_cpd_main_page":{"is_parent":false,"permissions":["view","export","approve"]}},"client_management":{"my_clients":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_clients":{"is_parent":false,"permissions":["view","edit","export"]},"client_overview":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"case_management":{"my_cases":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_cases":{"is_parent":false,"permissions":["view","edit","export"]},"case_overview":{"is_parent":false,"permissions":["view","create","edit","delete","approve","lock"]},"case_review":{"is_parent":false,"permissions":["view","create","edit","delete"]},"case_notes":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"roles":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"departments":{"main":{"is_parent":true,"permissions":["view","create","edit","delete","export","approve","reassign","lock"]}},"designations":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"subscription_management":{"my_subscription_page":{"is_parent":true,"permissions":["view"]}},"dashboard":{"stats":{"is_parent":true,"permissions":["view"]}},"countries":{"main":{"is_parent":true,"permissions":["view"]}},"reporting":{"reports_main_page":{"is_parent":true,"permissions":["view","export"]}},"document_templates":{"document_template_main_page":{"is_parent":true,"permissions":["view","create"]}},"exam_zone":{"exam_listing_page":{"is_parent":true,"permissions":["view","create","edit","delete"]},"my_results":{"is_parent":false,"permissions":["view","export"]},"team_results":{"is_parent":false,"permissions":["view","edit","export"]}},"support":{"my_queries":{"is_parent":true,"permissions":["view","create"]}},"notifications":{"notifications_main_page":{"is_parent":true,"permissions":["view","edit"]}},"solicitors":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"document_library":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"commissions":{"statements":{"is_parent":true,"permissions":["view","create","edit"]},"allocations":{"is_parent":false,"permissions":["view","edit","approve"]},"profiles":{"is_parent":false,"permissions":["view","edit"]},"settings":{"is_parent":false,"permissions":["view","edit"]},"retention_pot":{"is_parent":false,"permissions":["view","approve"]},"my_statements":{"is_parent":false,"permissions":["view"]}}}},"profileLogoThumbnailUrl":null},"message":"Profile retrieved successfully.","timestamp":"2026-08-10T19:09:32.1698599Z"}
2026-08-10 19:09:32.065 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/notifications responded 200 in 43.6591 ms
2026-08-10 19:09:32.065 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:70198dfed5c6] HTTP GET /api/v1/business/notifications 200
Req: [no body] Res: {"success":true,"data":{"content":[{"id":925,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:49:15.004918Z","isRead":true},{"id":924,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:49:14.997498Z","isRead":true},{"id":922,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:44:10.197555Z","isRead":true},{"id":921,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:44:10.190271Z","isRead":true},{"id":918,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:40:04.909599Z","isRead":true},{"id":917,"title":"User Role Updated","message":"Gagan Gagan (gagan.deep+444333@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:40:04.903616Z","isRead":true},{"id":914,"title":"Business User Status Changed","message":"Business user #932 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:38:46.320536Z","isRead":true},{"id":912,"title":"Business User Status Changed","message":"Business user #932 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:38:03.770506Z","isRead":true},{"id":910,"title":"Business User Status Changed","message":"Business user #932 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-10T11:37:29.378344Z","isRead":true},{"id":908,"title":"Business User Status Changed","message":"Business user #782 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T10:31:23.443331Z","isRead":true},{"id":906,"title":"New Branch Created","message":"A new branch Development has been created.","notificationType":"Info","eventType":"BranchCreated","tenantId":28,"audienceType":"HQBranchUsers","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T09:45:38.460064Z","isRead":true},{"id":905,"title":"New Branch Created","message":"A new branch TEST has been created.","notificationType":"Info","eventType":"BranchCreated","tenantId":28,"audienceType":"HQBranchUsers","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-07T09:43:34.745792Z","isRead":true},{"id":904,"title":"Business User Deactivated","message":"Business user Monster App (rajarao+1mons1@wealthmax.co.uk) has been deactivated.","notificationType":"Warning","eventType":"BusinessUserDeactivated","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-06T12:15:26.123313Z","isRead":true},{"id":902,"title":"Business User Status Changed","message":"Business user #939 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:50:53.221672Z","isRead":true},{"id":900,"title":"Business User Status Changed","message":"Business user #939 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:50:39.835148Z","isRead":true},{"id":898,"title":"Business User Status Changed","message":"Business user #939 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:49:40.93601Z","isRead":true},{"id":896,"title":"Business User Status Changed","message":"Business user #939 status changed from OnboardingReview to InProgress.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:46:24.926545Z","isRead":true},{"id":894,"title":"Business User Status Changed","message":"Business user #939 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:43:53.373478Z","isRead":true},{"id":893,"title":"New Business User Created","message":"New business user Monster App (rajarao+1mons1@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:16:26.300989Z","isRead":true},{"id":891,"title":"Business User Status Changed","message":"Business user #938 status changed from OnboardingReview to Rejected.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:07:53.123348Z","isRead":true},{"id":889,"title":"Business User Status Changed","message":"Business user #938 status changed from FinalReview to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T10:01:16.143618Z","isRead":true},{"id":874,"title":"Business User Status Changed","message":"Business user #938 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T09:56:17.056853Z","isRead":true},{"id":872,"title":"Business User Status Changed","message":"Business user #938 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T09:45:02.600313Z","isRead":true},{"id":871,"title":"New Business User Created","message":"New business user August Fifth (rajarao+1af@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T08:52:46.146945Z","isRead":true},{"id":870,"title":"New Business User Created","message":"New business user Arsh Singh (arshreen.s@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-05T07:23:46.090672Z","isRead":true},{"id":863,"title":"New Business User Created","message":"New business user Gagan Gagan (gagan.deep+444333@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T13:15:11.862713Z","isRead":true},{"id":862,"title":"New Business User Created","message":"New business user Mort Gage (rajarao+1mort@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T11:50:58.133981Z","isRead":true},{"id":861,"title":"New Business User Created","message":"New business user Sakshi Test (sakshi.dutta+34@wealthmax.co.uk) has been created.","notificationType":"Info","eventType":"BusinessUserCreated","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T11:50:41.01481Z","isRead":true},{"id":858,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:56.930912Z","isRead":true},{"id":857,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:56.924918Z","isRead":true},{"id":854,"title":"User Role Updated","message":"Max Well (gagan.deep+77@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:33.643254Z","isRead":true},{"id":853,"title":"User Role Updated","message":"Max Well (gagan.deep+77@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:07:33.637017Z","isRead":true},{"id":850,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:06:33.149352Z","isRead":true},{"id":849,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:06:33.143091Z","isRead":true},{"id":847,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:45.5889Z","isRead":true},{"id":846,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:45.583115Z","isRead":true},{"id":844,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:25.606189Z","isRead":true},{"id":843,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:03:25.599249Z","isRead":true},{"id":840,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:02:40.458995Z","isRead":true},{"id":839,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T10:02:40.45076Z","isRead":true},{"id":836,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:49:05.495821Z","isRead":true},{"id":835,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:49:05.488725Z","isRead":true},{"id":832,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"SpecificBusinessUser","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:48:45.170759Z","isRead":true},{"id":831,"title":"User Role Updated","message":"GAgan Deep (gagan.deep+5656@wealthmax.co.uk)'s role assignment has been updated.","notificationType":"Info","eventType":"BusinessUserRoleChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T09:48:45.164764Z","isRead":true},{"id":826,"title":"Business User Status Changed","message":"Business user #885 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:19:12.510219Z","isRead":true},{"id":824,"title":"Business User Status Changed","message":"Business user #885 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:18:29.410895Z","isRead":true},{"id":822,"title":"Business User Status Changed","message":"Business user #885 status changed from InProgress to OnboardingReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:14:01.330007Z","isRead":true},{"id":820,"title":"Business User Status Changed","message":"Business user #885 status changed from OnboardingReview to InProgress.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:13:26.539122Z","isRead":true},{"id":817,"title":"Business User Status Changed","message":"Business user #886 status changed from FinalReview to Approved.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-04T07:10:47.402343Z","isRead":true},{"id":815,"title":"Business User Status Changed","message":"Business user #886 status changed from OnboardingReview to FinalReview.","notificationType":"Warning","eventType":"BusinessUserApplicationStatusChanged","tenantId":28,"audienceType":"BusinessRole","priority":"Normal","expiresAt":null,"targetBranchId":null,"targetRoleId":null,"targetDepartmentId":null,"targetDesignationId":null,"targetUserId":null,"createdAt":"2026-08-03T15:10:06.097312Z","isRead":true}],"pagination":{"page":0,"size":50,"totalElements":317,"totalPages":7,"hasNext":true,"hasPrevious":false,"isFirst":true,"isLast":false}},"message":"Notifications retrieved successfully.","timestamp":"2026-08-10T19:09:32.064664Z"}
2026-08-10 19:09:32.048 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/notifications/unread-count responded 200 in 21.9535 ms
2026-08-10 19:09:32.048 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:996a028d8c03] HTTP GET /api/v1/business/notifications/unread-count 200
Req: [no body] Res: {"success":true,"message":"Unread count retrieved successfully.","timestamp":"2026-08-10T19:09:32.0481938Z"}
2026-08-10 19:09:32.005 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.6877 ms
2026-08-10 19:09:32.005 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:921491af767e] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#4F46E5","secondaryColor":"#EA580C","logoUrl":"https://protectionmortgagecrm.blob.core.windows.net/superadmin/staging/tenant-documents/28/28/28_Wealthmax-Financial-Advisers-Ltd._2026-06-22/c0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png?sv=2026-02-06&se=2026-08-10T20%3A09%3A32Z&sr=b&sp=r&rscd=attachment%3B+filename%3Dc0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png%3B+filename*%3DUTF-8%27%27c0ad32e9-e1ee-413b-8c66-dc01cd0eeade..png&sig=z811h5ktWlcXGY1BvWgm7tZSwWDJfE7w13iEBSqeKt4%3D","companyLogoThumbnailUrl":"https://protectionmortgagecrm.blob.core.windows.net/superadmin/staging/tenant-documents/28/f6694f6c-ddfc-4d16-80bc-664a01b3d416_logo.jpg?sv=2026-02-06&se=2036-07-18T13%3A31%3A06Z&sr=b&sp=r&sig=hNhUd61tHsDcA56Q%2F%2FmoaWos%2ByUFldaq%2Be979eNYxAE%3D","socialUrls":{"facebookUrl":null,"instagramUrl":null,"xUrl":null,"linkedInUrl":null}},"timestamp":"2026-08-10T19:09:32.0053889Z"}
2026-08-10 19:09:31.311 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/me responded 200 in 10.2089 ms
2026-08-10 19:09:31.311 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:b33c74bfeecc] HTTP GET /api/v1/business/me 200
Req: [no body] Res: {"success":true,"data":{"id":656,"userFacingId":"","email":"anmol.b@wealthmax.co.uk","firstName":"Anmol Kaur","lastName":"Bhatti","mobileNumber":"+44 6586384768","userOnboardingStep":null,"tenantId":28,"tenantCompanyName":"Wealthmax Financial Advisers Ltd.","branchId":5,"branchName":"Wealthmax Financial Advisers Ltd.","arId":null,"arName":null,"departmentId":190,"departmentName":"Management","designationId":379,"designationName":"Administrator","roles":[{"role_id":406,"role_name":"Admin","system_role_key":"Admin"}],"primaryColor":"#4F46E5","secondaryColor":"#EA580C","permissions":{"permissions":{"user_management":{"user_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"application_form_user_fills":{"is_parent":false,"permissions":["view","edit","approve"]},"user_profile":{"is_parent":false,"permissions":["view","edit","delete","approve"]}},"branch_management":{"branch_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"branch_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"my_tenant":{"company_details":{"is_parent":true,"permissions":["view","edit"]},"branding":{"is_parent":false,"permissions":["view","edit"]},"documents":{"is_parent":false,"permissions":["view","create","edit"]}},"ar_management":{"ar_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"ar_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"cpd":{"my_cpd":{"is_parent":true,"permissions":["view","create","edit","delete","export"]},"team_cpd_main_page":{"is_parent":false,"permissions":["view","export","approve"]}},"client_management":{"my_clients":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_clients":{"is_parent":false,"permissions":["view","edit","export"]},"client_overview":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"case_management":{"my_cases":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_cases":{"is_parent":false,"permissions":["view","edit","export"]},"case_overview":{"is_parent":false,"permissions":["view","create","edit","delete","approve","lock"]},"case_review":{"is_parent":false,"permissions":["view","create","edit","delete"]},"case_notes":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"roles":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"departments":{"main":{"is_parent":true,"permissions":["view","create","edit","delete","export","approve","reassign","lock"]}},"designations":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"subscription_management":{"my_subscription_page":{"is_parent":true,"permissions":["view"]}},"dashboard":{"stats":{"is_parent":true,"permissions":["view"]}},"countries":{"main":{"is_parent":true,"permissions":["view"]}},"reporting":{"reports_main_page":{"is_parent":true,"permissions":["view","export"]}},"document_templates":{"document_template_main_page":{"is_parent":true,"permissions":["view","create"]}},"exam_zone":{"exam_listing_page":{"is_parent":true,"permissions":["view","create","edit","delete"]},"my_results":{"is_parent":false,"permissions":["view","export"]},"team_results":{"is_parent":false,"permissions":["view","edit","export"]}},"support":{"my_queries":{"is_parent":true,"permissions":["view","create"]}},"notifications":{"notifications_main_page":{"is_parent":true,"permissions":["view","edit"]}},"solicitors":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"document_library":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"commissions":{"statements":{"is_parent":true,"permissions":["view","create","edit"]},"allocations":{"is_parent":false,"permissions":["view","edit","approve"]},"profiles":{"is_parent":false,"permissions":["view","edit"]},"settings":{"is_parent":false,"permissions":["view","edit"]},"retention_pot":{"is_parent":false,"permissions":["view","approve"]},"my_statements":{"is_parent":false,"permissions":["view"]}}}},"profileLogoThumbnailUrl":null},"message":"Profile retrieved successfully.","timestamp":"2026-08-10T19:09:31.3110451Z"}
2026-08-10 19:09:30.953 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /api/v1/business/auth/verify-2fa responded 200 in 82.6832 ms
2026-08-10 19:09:30.953 +00:00 [INF] [HTTP] [U:-] [E:-] [C:3b54e11a34ab] HTTP POST /api/v1/business/auth/verify-2fa 200
Req: [REDACTED — contains credentials] Res: {"success":true,"data":{"accessToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NTYiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjY1NiIsImVtYWlsIjoiYW5tb2wuYkB3ZWFsdGhtYXguY28udWsiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9lbWFpbGFkZHJlc3MiOiJhbm1vbC5iQHdlYWx0aG1heC5jby51ayIsImp0aSI6IjIwMzkwMjVlLTI1NGEtNDg3Ni04NmVlLTA4Y2RhYmFiMGFkYiIsInRlbmFudF9pZCI6IjI4IiwidG9rZW5fdHlwZSI6ImJ1c2luZXNzIiwic2VjdXJpdHlfc3RhbXAiOiJhMTYzNTRkYS01OGJmLTRkZDMtYTk4Mi1kZWI1YjdhYzU1NzMiLCJicmFuY2hfaWQiOiI1IiwiZGVwYXJ0bWVudF9pZCI6IjE5MCIsImRlc2lnbmF0aW9uX2lkIjoiMzc5IiwibmJmIjoxNzg2Mzg4OTcwLCJleHAiOjE3ODYzOTI1NzAsImlzcyI6IldlYWx0aG1heEJ1c2luZXNzIiwiYXVkIjoiV2VhbHRobWF4QnVzaW5lc3NDbGllbnRzIn0.Ep7AVyQqdgc_TuxjvkjJK3fw17YdwyuwFAnZHpeZjLo","accessTokenExpiresIn":3600,"refreshToken":"MzAp79XZj292+vGIxs375qUjm3MgM6RAazdxRgCriYz49kgbjesR/xWtdACU8rwQ3ugkwSZU7EWQzQMz7PR25g==","accessTokenExpiresUtc":"2026-08-10T20:09:30.8840752Z","refreshTokenExpiresUtc":"2026-08-17T19:09:30.8840752Z","resendAvailableInSeconds":0,"applicationStatus":"Operational","creationFlow":"Manual Licensed","permissions":{"permissions":{"user_management":{"user_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"application_form_user_fills":{"is_parent":false,"permissions":["view","edit","approve"]},"user_profile":{"is_parent":false,"permissions":["view","edit","delete","approve"]}},"branch_management":{"branch_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"branch_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"my_tenant":{"company_details":{"is_parent":true,"permissions":["view","edit"]},"branding":{"is_parent":false,"permissions":["view","edit"]},"documents":{"is_parent":false,"permissions":["view","create","edit"]}},"ar_management":{"ar_list_main_page":{"is_parent":true,"permissions":["view","create","edit","export"]},"ar_profile_view":{"is_parent":false,"permissions":["view","edit"]}},"cpd":{"my_cpd":{"is_parent":true,"permissions":["view","create","edit","delete","export"]},"team_cpd_main_page":{"is_parent":false,"permissions":["view","export","approve"]}},"client_management":{"my_clients":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_clients":{"is_parent":false,"permissions":["view","edit","export"]},"client_overview":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"case_management":{"my_cases":{"is_parent":true,"permissions":["view","create","edit","export"]},"team_cases":{"is_parent":false,"permissions":["view","edit","export"]},"case_overview":{"is_parent":false,"permissions":["view","create","edit","delete","approve","lock"]},"case_review":{"is_parent":false,"permissions":["view","create","edit","delete"]},"case_notes":{"is_parent":false,"permissions":["view","create","edit","delete"]}},"roles":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"departments":{"main":{"is_parent":true,"permissions":["view","create","edit","delete","export","approve","reassign","lock"]}},"designations":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"subscription_management":{"my_subscription_page":{"is_parent":true,"permissions":["view"]}},"dashboard":{"stats":{"is_parent":true,"permissions":["view"]}},"countries":{"main":{"is_parent":true,"permissions":["view"]}},"reporting":{"reports_main_page":{"is_parent":true,"permissions":["view","export"]}},"document_templates":{"document_template_main_page":{"is_parent":true,"permissions":["view","create"]}},"exam_zone":{"exam_listing_page":{"is_parent":true,"permissions":["view","create","edit","delete"]},"my_results":{"is_parent":false,"permissions":["view","export"]},"team_results":{"is_parent":false,"permissions":["view","edit","export"]}},"support":{"my_queries":{"is_parent":true,"permissions":["view","create"]}},"notifications":{"notifications_main_page":{"is_parent":true,"permissions":["view","edit"]}},"solicitors":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"document_library":{"main":{"is_parent":true,"permissions":["view","create","edit","delete"]}},"commissions":{"statements":{"is_parent":true,"permissions":["view","create","edit"]},"allocations":{"is_parent":false,"permissions":["view","edit","approve"]},"profiles":{"is_parent":false,"permissions":["view","edit"]},"settings":{"is_parent":false,"permissions":["view","edit"]},"retention_pot":{"is_parent":false,"permissions":["view","approve"]},"my_statements":{"is_parent":false,"permissions":["view"]}}}},"user":{"id":656,"userFacingId":"","email":"anmol.b@wealthmax.co.uk","firstName":"Anmol Kaur","lastName":"Bhatti","userApplicationStatus":null,"userOnboardingStep":null,"tenantId":28,"branchId":5,"arId":null,"departmentId":190,"designationId":379,"departmentName":"Management","designationName":"Administrator","branchName":"Wealthmax Financial Advisers Ltd.","arName":null,"roles":[{"role_id":406,"role_name":"Admin","system_role_key":"Admin"}],"profilePhotoUrl":null,"primaryColor":"#4F46E5","secondaryColor":"#EA580C"}},"message":"OTP verification successful.","timestamp":"2026-08-10T19:09:30.9533513Z"}
2026-08-10 19:09:27.288 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /api/v1/business/auth/login responded 200 in 122.5821 ms
2026-08-10 19:09:27.287 +00:00 [INF] [HTTP] [U:-] [E:-] [C:f6ecb6c05a4f] HTTP POST /api/v1/business/auth/login 200
Req: [REDACTED — contains credentials] Res: {"success":true,"data":{"challengeToken":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2NTYiLCJ1c2VyX2lkIjoiNjU2IiwiZW1haWwiOiJhbm1vbC5iQHdlYWx0aG1heC5jby51ayIsInRlbmFudF9pZCI6IjI4Iiwib3RwX2hhc2giOiJDQ0RCMUFBMzM1REFBOUM3QkIzOTZCMjc0QjAyMkM4Q0NDNjA3MDk4MkZBNUE2QTdDNTRFMzhDREM5MDcxQTBEIiwicmVzZW5kX2NvdW50IjoiMCIsInR5cGUiOiJidXNpbmVzc19jaGFsbGVuZ2UiLCJpYXQiOjE3ODYzODg5NjcsIm5iZiI6MTc4NjM4ODk2NywiZXhwIjoxNzg2Mzg5MTQ3fQ.6Ub0XJf7_DaSNaEz2NMaxWuESJeZvgRwJHVHYFd6qCA","otpExpiresInSeconds":180,"maxAttempts":5,"resendAvailableInSeconds":60,"maxResends":3,"resendLockoutDurationSeconds":1800},"message":"Verification code sent to your email.","timestamp":"2026-08-10T19:09:27.2878115Z"}
2026-08-10 19:09:24.251 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /api/v1/business/auth/logout responded 200 in 146.5338 ms
2026-08-10 19:09:24.251 +00:00 [INF] [HTTP] [U:-] [E:-] [C:197063adaa27] HTTP POST /api/v1/business/auth/logout 200
Req: {"refreshToken":"KlVH5/V3xFfmsdIvxHqHinObm9gDWs9FLBDbf2Mb2+iMwwCxP9mhaCbwoQTMAnZCl8wUbS2pbl8h1Kt1df0IXg=="} Res: {"success":true,"message":"Logged out successfully.","timestamp":"2026-08-10T19:09:24.2511178Z"}
2026-08-10 19:09:23.280 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.7674 ms
2026-08-10 19:09:23.279 +00:00 [INF] [HTTP] [U:-] [E:-] [C:528615ea5055] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzquoWJjXX7NBzNhWMWINg6lhVOqno4uDoC8ANNB--KUG265P4FZbYZ6skC8KhoeMwW6ws_5OIw9c_0TDvyIPD9ni5P1mcGEglpwza5R-d1JWPl_29iOcfGXGRGOdTVhH6A" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:09:23.174 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/FactFindFormatters/Index responded 302 in 0.6944 ms
2026-08-10 19:09:23.174 +00:00 [INF] [HTTP] [U:-] [E:-] [C:9c9875d58194] HTTP GET /UI/FactFindFormatters/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:08:56.063 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.4471 ms
2026-08-10 19:08:56.062 +00:00 [INF] [HTTP] [U:-] [E:-] [C:ea2fff4820ca] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzp5wPi1Rpc5FrcuRw-QeUXXYUKD1erQbv8M72drH0D0SYEvQzq1S6gR1v1KZwLl6-MrDaIiM5x4ULGD9X3RGLL_aJjxn9VwZb9gEySPeAFWYUyZsbwS2jCYXKZaIweXwLk" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:08:55.957 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Users/Index responded 302 in 0.7304 ms
2026-08-10 19:08:55.957 +00:00 [INF] [HTTP] [U:-] [E:-] [C:55bb63e57d60] HTTP GET /UI/Users/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:08:55.859 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI responded 200 in 8.4357 ms
2026-08-10 19:08:55.859 +00:00 [INF] [HTTP] [U:-] [E:-] [C:b59adc9a227f] HTTP GET /UI 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Home — WM Policy Documents</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <link rel="stylesheet" href="/css/commissions.css?v=ZRMXSlMSxdLsHmJCZzq1LopWaopJSbVXKu57gvUJG3w" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" /> <style> /* ---- Hover-expand left sidebar -------------------------------------- */ :root { --sb-collapsed: 64px; --sb-expanded: 240px; } body.has-sidebar { /* Reserve space for the collapsed rail; the expanded panel overlays the content on hover, so the content never shifts. */ padding-left: var(--sb-collapsed); } .app-sidebar { position: fixed; top: 0; left: 0; height: 100vh; width: var(--sb-collapsed); overflow-x: hidden; overflow-y: auto; display: flex; flex-direction: column; z-index: 1045; transition: width 0.2s ease; } .app-sidebar:hover, .app-sidebar:focus-within { width: var(--sb-expanded); box-shadow: 0 0 24px rgba(0,0,0,0.35); } .app-sidebar .sb-label { white-space: nowrap; opacity: 0; transition: opacity 0.15s ease; } .app-sidebar:hover .sb-label, .app-sidebar:focus-within .sb-label { opacity: 1; } .sb-link { display: flex; align-items: center; gap: 0.85rem; padding: 0.65rem 0; color: rgba(255,255,255,0.75); text-decoration: none; border-left: 3px solid transparent; } .sb-link:hover { color: #fff; background: rgba(255,255,255,0.08); } .sb-link.active { color: #fff; background: rgba(255,255,255,0.12); border-left-color: #0d6efd; } .sb-link > i:first-child { min-width: var(--sb-collapsed); text-align: center; font-size: 1.15rem; flex-shrink: 0; } .sb-brand { display: flex; align-items: center; gap: 0.85rem; padding: 0.9rem 0; color: #fff; text-decoration: none; font-weight: 700; } .sb-brand > i:first-child { min-width: var(--sb-collapsed); text-align: center; font-size: 1.3rem; flex-shrink: 0; } /* Sub-menu (Fact-Find) */ .sb-submenu .sb-link { font-size: 0.9rem; padding-left: 0; } .sb-submenu .sb-link > i:first-child { font-size: 1rem; } .sb-caret { margin-left: auto; margin-right: 0.9rem; transition: transform 0.15s ease; } .sb-link[aria-expanded="true"] .sb-caret { transform: rotate(180deg); } </style> </head> <body class="d-flex flex-column min-vh-100 has-sidebar"> <nav b-yjl2sbey1b class="app-sidebar navbar-dark bg-dark shadow-sm"> <a class="sb-brand" href="/UI"> <i b-yjl2sbey1b class="bi bi-file-earmark-text"></i> <span b-yjl2sbey1b class="sb-label">Wealthmax</span> </a> <div b-yjl2sbey1b class="d-flex flex-column flex-grow-1"> <a class="sb-link " href="/UI/Dashboard/Index"> <i b-yjl2sbey1b class="bi bi-speedometer2"></i><span b-yjl2sbey1b class="sb-label">Dashboard</span> </a> <a class="sb-link " href="/UI/Templates/Index"> <i b-yjl2sbey1b class="bi bi-collection"></i><span b-yjl2sbey1b class="sb-label">Templates</span> </a> <a class="sb-link " href="/UI/Tokens/Index"> <i b-yjl2sbey1b class="bi bi-braces"></i><span b-yjl2sbey1b class="sb-label">Token Registry</span> </a> <a class="sb-link " href="/UI/Clients/Index"> <i b-yjl2sbey1b class="bi bi-people"></i><span b-yjl2sbey1b class="sb-label">Clients</span> </a> <a class="sb-link " href="/UI/Cases/Index"> <i b-yjl2sbey1b class="bi bi-briefcase"></i><span b-yjl2sbey1b class="sb-label">Cases</span> </a> <a class="sb-link " href="/UI/Reporting/Index"> <i b-yjl2sbey1b class="bi bi-graph-up"></i><span b-yjl2sbey1b class="sb-label">Reports</span> </a> <a class="sb-link " href="/UI/Commissions/Management"> <i b-yjl2sbey1b class="bi bi-cash-coin"></i><span b-yjl2sbey1b class="sb-label">Commissions</span> </a> <!-- User Management --> <a class="sb-link " href="/UI/Users/Index"> <i b-yjl2sbey1b class="bi bi-person-gear"></i><span b-yjl2sbey1b class="sb-label">User Management</span> </a> <!-- Fact-Find (expandable sub-menu) --> <a b-yjl2sbey1b class="sb-link " href="#ffSubmenu" role="button" data-bs-toggle="collapse" aria-expanded="false"> <i b-yjl2sbey1b class="bi bi-file-earmark-text"></i><span b-yjl2sbey1b class="sb-label">Fact-Find</span> <i b-yjl2sbey1b class="bi bi-chevron-down sb-caret sb-label"></i> </a> <div b-yjl2sbey1b class="collapse sb-submenu " id="ffSubmenu"> <a class="sb-link " href="/UI/FactFindFormatters/Index"> <i b-yjl2sbey1b class="bi bi-grid"></i><span b-yjl2sbey1b class="sb-label">Formatters</span> </a> <a class="sb-link " href="/UI/FactFindTemplates/Index"> <i b-yjl2sbey1b class="bi bi-layers"></i><span b-yjl2sbey1b class="sb-label">Templates</span> </a> <a class="sb-link " href="/UI/FactFindGenerate"> <i b-yjl2sbey1b class="bi bi-lightning-charge"></i><span b-yjl2sbey1b class="sb-label">Generate &amp; Preview</span> </a> </div> </div> <!-- Auth (pinned to bottom) --> <div b-yjl2sbey1b class="mt-auto border-top border-secondary"> <a b-yjl2sbey1b class="sb-link" href="/UI/business/login"> <i b-yjl2sbey1b class="bi bi-box-arrow-in-right"></i><span b-yjl2sbey1b class="sb-label">Business login</span> </a> </div> </nav> <main b-yjl2sbey1b class="flex-grow-1 py-4"> <div b-yjl2sbey1b class="container-fluid px-4"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> <style> body > nav.navbar { position: sticky; top: 0; z-index: 1030; } .dash-hero { background: linear-gradient(135deg, #212529 0%, #343a40 100%); color: #fff; } .dash-card { border: none; border-radius: 12px; transition: transform 0.15s ease, box-shadow 0.15s ease; } .dash-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,0.10) !important; } .dash-icon { width: 48px; height: 48px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; } .dash-stat-value { font-size: 2rem; font-weight: 700; line-height: 1; } .dash-card-title { font-size: 0.95rem; font-weight: 600; } .dash-card-text { font-size: 0.78rem; } /* Discreet business-login link pinned to the bottom-right corner. */ .home-login-link { position: fixed; bottom: 1rem; right: 1.25rem; z-index: 1040; } </style> <!-- Hero --> <div class="dash-hero py-4 mb-4"> <div class="container text-center"> <h1 class="display-6 fw-bold mb-2">Wealthmax PM CRM</h1> <p class="lead text-white-50 mb-0" style="max-width: 640px; margin: 0 auto;"> Testing harness dashboard &mdash; system tools, integrations, and live service health at a glance. </p> </div> </div> <div class="container pb-5"> <!-- Tool / Integration cards --> <div class="row g-3 mb-4"> <!-- Tenants Created --> <div class="col-6 col-md-4 col-lg-3"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="d-flex align-items-start justify-content-between mb-2"> <div class="dash-icon bg-primary bg-opacity-10 text-primary"> <i class="bi bi-building-fill"></i> </div> <span class="badge bg-secondary bg-opacity-10 text-secondary">Sample</span> </div> <div class="dash-stat-value text-dark">12</div> <div class="dash-card-title text-dark mt-1">Tenants Created</div> <p class="dash-card-text text-muted mb-0">Total onboarded tenants in this environment.</p> </div> </div> </div> <!-- Build Logs --> <div class="col-6 col-md-4 col-lg-3"> <a href="/UI/DevLogs" class="text-decoration-none"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="dash-icon bg-dark bg-opacity-10 text-dark mb-2"> <i class="bi bi-terminal-fill"></i> </div> <div class="dash-card-title text-dark">Build &amp; App Logs</div> <p class="dash-card-text text-muted mb-0">Browse structured application logs by date and level.</p> </div> </div> </a> </div> <!-- Swagger --> <div class="col-6 col-md-4 col-lg-3"> <a href="/swagger" target="_blank" class="text-decoration-none"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="d-flex align-items-start justify-content-between mb-2"> <div class="dash-icon bg-success bg-opacity-10 text-success"> <i class="bi bi-braces"></i> </div> <i class="bi bi-box-arrow-up-right text-muted small"></i> </div> <div class="dash-card-title text-dark">Swagger / API Docs</div> <p class="dash-card-text text-muted mb-0">Explore and try the REST API via OpenAPI UI.</p> </div> </div> </a> </div> <!-- SignalR --> <div class="col-6 col-md-4 col-lg-3"> <a href="/test-signalr.html" target="_blank" class="text-decoration-none"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="d-flex align-items-start justify-content-between mb-2"> <div class="dash-icon bg-info bg-opacity-10 text-info"> <i class="bi bi-broadcast"></i> </div> <i class="bi bi-box-arrow-up-right text-muted small"></i> </div> <div class="dash-card-title text-dark">SignalR Hub</div> <p class="dash-card-text text-muted mb-0">Test real-time notifications over the SignalR hub.</p> </div> </div> </a> </div> <!-- iPipeline --> <div class="col-6 col-md-4 col-lg-3"> <a href="/demo/solution-builder" class="text-decoration-none"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="dash-icon bg-warning bg-opacity-10 text-warning mb-2"> <i class="bi bi-plug-fill"></i> </div> <div class="dash-card-title text-dark">iPipeline</div> <p class="dash-card-text text-muted mb-0">Launch the iPipeline Solution Builder integration.</p> </div> </div> </a> </div> <!-- Fetch Quotes --> <div class="col-6 col-md-4 col-lg-3"> <a href="/demo/solution-builder/events" class="text-decoration-none"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="dash-icon bg-danger bg-opacity-10 text-danger mb-2"> <i class="bi bi-receipt"></i> </div> <div class="dash-card-title text-dark">Fetch Quotes</div> <p class="dash-card-text text-muted mb-0">View quote-notification events returned from the pipeline.</p> </div> </div> </a> </div> <!-- CRM Dashboard --> <div class="col-6 col-md-4 col-lg-3"> <a class="text-decoration-none" href="/UI/Dashboard/Index"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="dash-icon bg-primary bg-opacity-10 text-primary mb-2"> <i class="bi bi-speedometer2"></i> </div> <div class="dash-card-title text-dark">CRM Dashboard</div> <p class="dash-card-text text-muted mb-0">Cases, clients, and commission overview metrics.</p> </div> </div> </a> </div> <!-- Clients --> <div class="col-6 col-md-4 col-lg-3"> <a class="text-decoration-none" href="/UI/Clients/Index"> <div class="card dash-card shadow-sm h-100"> <div class="card-body p-3"> <div class="dash-icon bg-success bg-opacity-10 text-success mb-2"> <i class="bi bi-people-fill"></i> </div> <div class="dash-card-title text-dark">Clients &amp; Cases</div> <p class="dash-card-text text-muted mb-0">Manage client records and advisory cases.</p> </div> </div> </a> </div> </div> <!-- System Health --> <div id="health-card" class="card dash-card shadow-sm mb-4"> <div class="card-body p-3"> <!-- Loading state --> <div id="health-loading" class="text-center py-3"> <div class="spinner-border spinner-border-sm text-primary" role="status"> <span class="visually-hidden">Loading...</span> </div> <span class="ms-2 text-muted">Checking system health...</span> </div> <!-- Error state --> <div id="health-error" class="d-none text-center py-3"> <i class="bi bi-exclamation-triangle fs-4 text-danger d-block mb-2"></i> <p class="text-muted mb-1">Unable to reach the health endpoint.</p> <button class="btn btn-sm btn-outline-secondary" onclick="fetchHealth()"> <i class="bi bi-arrow-clockwise me-1"></i>Retry </button> </div> <!-- Success state --> <div id="health-content" class="d-none"> <div class="d-flex align-items-center mb-3"> <i class="bi bi-heart-pulse fs-4 text-primary me-2"></i> <h5 class="fw-semibold mb-0 me-auto">System Health</h5> <span id="health-status-badge" class="badge"></span> </div> <hr class="my-3"> <div class="row g-2 small"> <div class="col-sm-6"> <div class="d-flex align-items-center text-muted mb-2"> <i class="bi bi-clock me-2"></i> <span>Checked: <span id="health-timestamp" class="text-body"></span></span> </div> </div> <div class="col-sm-6"> <div class="d-flex align-items-center text-muted mb-2"> <i class="bi bi-speedometer2 me-2"></i> <span>Response: <span id="health-duration" class="text-body"></span></span> </div> </div> <div class="col-sm-6 d-none" id="health-db-row"> <div class="d-flex align-items-center text-muted mb-2"> <i class="bi bi-database me-2"></i> <span>Database: <span id="health-database" class="text-body"></span></span> </div> </div> <div class="col-sm-6 d-none" id="health-build-row"> <div class="d-flex align-items-center text-muted mb-2"> <i class="bi bi-git me-2"></i> <span>Build: <code id="health-commit"></code> <span id="health-build-date" class="text-muted"></span></span> </div> </div> </div> </div> </div> </div> <!-- Tech Stack --> <div class="text-center"> <div class="d-flex flex-wrap justify-content-center gap-3 text-muted small"> <span><i class="bi bi-gear me-1"></i>.NET 10</span> <span class="text-black-50">|</span> <span><i class="bi bi-database me-1"></i>PostgreSQL</span> <span class="text-black-50">|</span> <span><i class="bi bi-layers me-1"></i>Entity Framework Core</span> <span class="text-black-50">|</span> <span><i class="bi bi-lock me-1"></i>JWT Authentication</span> <span class="text-black-50">|</span> <span><i class="bi bi-book me-1"></i>OpenAPI / Swagger</span> </div> </div> </div> </content> </div> </main> <footer b-yjl2sbey1b class="bg-light border-top py-2 text-center text-muted small"> Wealthmax PM CRM &mdash; Policy Document Testing UI </footer> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/js/site.js?v=y_Ngd8W21UpuCUhEqGbUKDEqFnNfTjAfb24GhJJGUyM"></script> <script> function escapeHtml(text) { var div = document.createElement('div'); div.appendChild(document.createTextNode(text)); return div.innerHTML; } function statusBadgeClass(status) { switch ((status || '').toLowerCase()) { case 'healthy': return 'bg-success'; case 'degraded': return 'bg-warning text-dark'; default: return 'bg-danger'; } } function fetchHealth() { document.getElementById('health-loading').classList.remove('d-none'); document.getElementById('health-error').classList.add('d-none'); document.getElementById('health-content').classList.add('d-none'); fetch('/api/health') .then(function (response) { if (response.ok || response.status === 503) { return response.json(); } throw new Error('Unexpected status: ' + response.status); }) .then(function (response) { var health = response.data || response; renderHealth(health); document.getElementById('health-loading').classList.add('d-none'); document.getElementById('health-content').classList.remove('d-none'); }) .catch(function () { document.getElementById('health-loading').classList.add('d-none'); document.getElementById('health-error').classList.remove('d-none'); }); } function renderHealth(data) { var badge = document.getElementById('health-status-badge'); badge.textContent = data.status; badge.className = 'badge ' + statusBadgeClass(data.status); document.getElementById('health-timestamp').textContent = new Date(data.timestamp).toLocaleString(); document.getElementById('health-duration').textContent = data.totalDurationMs + ' ms'; var dbRow = document.getElementById('health-db-row'); if (data.databaseName || data.databaseProvider) { var parts = []; if (data.databaseName) parts.push(data.databaseName); if (data.databaseProvider) parts.push(data.databaseProvider); document.getElementById('health-database').textContent = parts.join(' on '); dbRow.classList.remove('d-none'); } else { dbRow.classList.add('d-none'); } var buildRow = document.getElementById('health-build-row'); if (data.commitHash || data.lastBuildDate) { document.getElementById('health-commit').textContent = data.commitHash || ''; document.getElementById('health-build-date').textContent = data.lastBuildDate ? '(' + new Date(data.lastBuildDate).toLocaleDateString() + ')' : ''; buildRow.classList.remove('d-none'); } else { buildRow.classList.add('d-none'); } } fetchHealth(); </script> </body> </html>
2026-08-10 19:08:04.235 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.5669 ms
2026-08-10 19:08:04.234 +00:00 [INF] [HTTP] [U:-] [E:-] [C:f9b0c2d2ddb5] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzqiL4MhAoCbiQbSPx9fhp4kgRZOCjxo7ZeaiXMfiQzpNrxHWFhibCxA4rgNX4WHLEhIw7fqZ_ZATs5unvSEyRnLI4xND0hept-8wSvKSoz3zCLQQ8XeRZ5s8UyaIGqilRM" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:08:04.139 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 2.9774 ms
2026-08-10 19:08:04.138 +00:00 [INF] [HTTP] [U:-] [E:-] [C:7920cdf93192] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzrKluuvST3UeyfVQOP4uazTslkz-ZeGnxnjE-aNy914C4nWM6_KeXNqA89PIVvUvIlcV9e12YPzrnN9e8C1A4F9ihYVItp5Qv_6nadwtU5FvD5Q7rwkrTc1AkNfM6ZalCo" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:08:04.042 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Commissions/Management responded 302 in 0.5646 ms
2026-08-10 19:08:04.042 +00:00 [INF] [HTTP] [U:-] [E:-] [C:f0d7a433a0cc] HTTP GET /UI/Commissions/Management 302
Req: [no body] Res: [empty response]
2026-08-10 19:08:03.945 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/FactFindTemplates/Index responded 302 in 1.2342 ms
2026-08-10 19:08:03.944 +00:00 [INF] [HTTP] [U:-] [E:-] [C:d499ee6cdfc2] HTTP GET /UI/FactFindTemplates/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:07:33.022 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /swagger/index.html responded 200 in 0.7398 ms
2026-08-10 19:07:32.927 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /swagger responded 301 in 0.0521 ms
2026-08-10 19:07:26.110 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.5714 ms
2026-08-10 19:07:26.110 +00:00 [INF] [HTTP] [U:-] [E:-] [C:7ffd1a19ca8c] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzrB6YJKEeMXBgkA0OZgSoiPIFAIJwVbYkZpSw7Of1OfmFyXe3jJ5nOVwx0TjbNDWzJrYUDE7-44flCAHEN1QL716Pkj3eClXOGs5O83BSImASKZ0x4bKI2d7U24gSD2fC4" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:07:26.018 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Dashboard/Index responded 302 in 0.7470 ms
2026-08-10 19:07:26.018 +00:00 [INF] [HTTP] [U:-] [E:-] [C:fd1aa8c90e85] HTTP GET /UI/Dashboard/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:07:25.684 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.5806 ms
2026-08-10 19:07:25.684 +00:00 [INF] [HTTP] [U:-] [E:-] [C:8eb90499cd29] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzoe1fVQIMPnYNM6-0m9t2qKImlv6ZTpyTKT1FbOQSUR9JMrf4dKOeGKoXOcL8b3DhF7DurWWdm8L9NJxyJ7F0xDH2WxvNDwaP9XSRg5OHC6DR3H5OYwpYO3vZaM9ao5bcM" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:07:25.588 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /demo/solution-builder responded 200 in 4.4232 ms
2026-08-10 19:07:25.587 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e556299d9942] HTTP GET /demo/solution-builder 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>iPipeline Demo — Wealthmax CRM</title> <style> *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #f8fafc; color: #1e293b; min-height: 100vh; } /* ── Header ── */ .page-header { background: #fff; border-bottom: 1px solid #e2e8f0; padding: 1rem 2rem; display: flex; align-items: center; gap: 1rem; } .page-header h1 { font-size: 1rem; font-weight: 700; color: #0f172a; letter-spacing: -.01em; } .badge { font-size: .6rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: .18rem .5rem; border-radius: 9999px; } .badge-demo { background: #fef3c7; color: #92400e; } .page-header nav { margin-left: auto; display: flex; gap: 1.25rem; font-size: .8rem; } .page-header nav a { color: #6366f1; text-decoration: none; font-weight: 500; } .page-header nav a:hover { text-decoration: underline; } /* ── Page layout ── */ .page-body { max-width: 820px; margin: 2rem auto; padding: 0 1.5rem 4rem; display: flex; flex-direction: column; gap: 1rem; } /* ── Card ── */ .card { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.03); overflow: hidden; } .card-header { padding: .875rem 1.5rem; border-bottom: 1px solid #f1f5f9; display: flex; align-items: center; gap: .6rem; background: #fafafa; } .card-header h2 { font-size: .8rem; font-weight: 700; color: #374151; letter-spacing: .04em; text-transform: uppercase; } .card-body { padding: 1.25rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; } /* ── Sub-section divider inside a card ── */ .sub-section { padding-top: 1rem; border-top: 1px solid #f1f5f9; display: flex; flex-direction: column; gap: .85rem; } .sub-label { font-size: .68rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: #6366f1; } /* ── Field grid ── */ .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: .875rem; } .field-row.single { grid-template-columns: 1fr; } .field-row.triple { grid-template-columns: 1fr 1fr 1fr; } .field-group { display: flex; flex-direction: column; gap: .3rem; } .field-group label { font-size: .72rem; font-weight: 600; color: #475569; } .field-hint { font-size: .68rem; font-weight: 400; color: #94a3b8; margin-left: .2rem; } .field-group input, .field-group select { background: #fff; color: #0f172a; border: 1px solid #d1d5db; border-radius: 7px; padding: .52rem .75rem; font-size: .875rem; width: 100%; transition: border-color .15s, box-shadow .15s; appearance: auto; } .field-group input::placeholder { color: #c8d1db; } .field-group input:focus, .field-group select:focus { outline: none; border-color: #818cf8; box-shadow: 0 0 0 3px rgba(99,102,241,.1); } /* ── Second-life toggle ── */ .toggle-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,.04); } .toggle-card label { display: flex; align-items: center; gap: .75rem; padding: .95rem 1.5rem; cursor: pointer; user-select: none; } .toggle-card input[type=checkbox] { accent-color: #6366f1; width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; } .toggle-card .toggle-text { font-size: .85rem; font-weight: 500; color: #374151; } .toggle-card .toggle-sub { font-size: .75rem; color: #94a3b8; margin-left: auto; } /* ── Second life collapsible ── */ .second-life-section { display: none; flex-direction: column; gap: 1rem; } .second-life-section.visible { display: flex; } /* ── Policy settings card accent ── */ .card.settings .card-header { background: #f5f3ff; border-bottom-color: #ede9fe; } .card.settings .card-header h2 { color: #5b21b6; } /* ── Launch button ── */ .launch-wrap { display: flex; flex-direction: column; gap: .6rem; padding-top: .25rem; } .launch-btn { width: 100%; background: #4f46e5; color: #fff; border: none; border-radius: 10px; padding: .85rem 1rem; font-size: .925rem; font-weight: 600; cursor: pointer; transition: background .15s, transform .1s, box-shadow .15s; display: flex; align-items: center; justify-content: center; gap: .5rem; box-shadow: 0 2px 8px rgba(79,70,229,.25); } .launch-btn:hover { background: #4338ca; box-shadow: 0 4px 12px rgba(79,70,229,.35); } .launch-btn:active { transform: scale(.985); } .launch-btn svg { width: 15px; height: 15px; flex-shrink: 0; } .launch-hint { font-size: .72rem; color: #94a3b8; text-align: center; } </style> </head> <body> <!-- ── Header ── --> <header class="page-header"> <h1>iPipeline Solution Builder</h1> <span class="badge badge-demo">Demo</span> <nav> <a href="/">Home</a> <a href="/demo/solution-builder/events">Fetch Quotes →</a> </nav> </header> <div class="page-body"> <form id="demoForm" method="post" action="/demo/solution-builder/launch" target="_blank"> <!-- ── Case selector ── --> <div class="card"> <div class="card-body"> <div class="field-group"> <label for="caseSelect">Select Demo Case</label> <select id="caseSelect" name="CaseRef" onchange="loadCase(this.value)"> <option value="">— Choose a case to pre-fill the form —</option> <option value="WM-DEMO-001">James Wilson &#x2014; Single, Male, Non-Smoker (35 yrs)</option> <option value="WM-DEMO-002">Sarah Mitchell &#x2014; Single, Female, Smoker (33 yrs)</option> <option value="WM-DEMO-003">Robert &amp; Emma Clarke &#x2014; Joint Life, Non-Smokers</option> <option value="WM-DEMO-004">David Thompson &#x2014; Single, Male, Smoker (51 yrs)</option> <option value="WM-DEMO-005">Michael &amp; Lisa Brown &#x2014; Joint Life, Both Smokers</option> </select> </div> </div> </div> <!-- ── First Life ── --> <div class="card"> <div class="card-header"> <h2>First Life</h2> </div> <div class="card-body"> <div class="field-row"> <div class="field-group"> <label>First Name</label> <input id="firstFirstName" name="FirstFirstName" type="text" placeholder="e.g. James" required /> </div> <div class="field-group"> <label>Last Name</label> <input id="firstLastName" name="FirstLastName" type="text" placeholder="e.g. Wilson" required /> </div> </div> <div class="field-row"> <div class="field-group"> <label>Date of Birth</label> <input id="firstDateOfBirth" name="FirstDateOfBirth" type="date" required /> </div> <div class="field-group"> <label>Gender</label> <select id="firstGender" name="FirstGender"> <option value="Male">Male</option> <option value="Female">Female</option> </select> </div> </div> <div class="field-row single"> <div class="field-group"> <label>Smoker Status</label> <select id="firstIsSmoker" name="FirstIsSmoker"> <option value="false">Non-Smoker</option> <option value="true">Smoker</option> </select> </div> </div> <!-- Cover details --> <div class="sub-section"> <div class="sub-label">Cover Details</div> <div class="field-row"> <div class="field-group"> <label>Life Cover Amount (£)</label> <input id="lifeCoverAmount" name="LifeCoverAmount" type="number" value="300000" /> </div> <div class="field-group"> <label>Life Cover Up to Age <span class="field-hint">46 – 99</span></label> <input id="lifeToAge" name="LifeToAge" type="number" value="85" min="46" max="99" /> </div> </div> <div class="field-row"> <div class="field-group"> <label>Critical Illness Amount (£)</label> <input id="ciCoverAmount" name="CiCoverAmount" type="number" value="30000" /> </div> <div class="field-group"> <label>CI Cover Up to Age <span class="field-hint">43 – 99</span></label> <input id="ciToAge" name="CiToAge" type="number" value="70" min="43" max="99" /> </div> </div> <div class="field-row single"> <div class="field-group"> <label>Waiver of Premium</label> <select id="waiverOfPremium" name="WaiverOfPremium"> <option value="None" selected>None</option> <option value="FirstLife">FirstLife</option> </select> </div> </div> </div> </div> </div> <!-- ── Second Life toggle ── --> <div class="toggle-card"> <label for="hasSecondLife"> <input type="checkbox" id="hasSecondLife" name="HasSecondLife" value="true" onchange="toggleSecondLife(this.checked)" /> <span class="toggle-text">Add Second Life</span> <span class="toggle-sub">Joint Policy</span> </label> </div> <!-- ── Second Life ── --> <div id="secondLifeSection" class="second-life-section"> <div class="card"> <div class="card-header"> <h2>Second Life</h2> </div> <div class="card-body"> <div class="field-row"> <div class="field-group"> <label>First Name</label> <input id="secondFirstName" name="SecondFirstName" type="text" placeholder="e.g. Emma" /> </div> <div class="field-group"> <label>Last Name</label> <input id="secondLastName" name="SecondLastName" type="text" placeholder="e.g. Clarke" /> </div> </div> <div class="field-row"> <div class="field-group"> <label>Date of Birth</label> <input id="secondDateOfBirth" name="SecondDateOfBirth" type="date" /> </div> <div class="field-group"> <label>Gender</label> <select id="secondGender" name="SecondGender"> <option value="Male">Male</option> <option value="Female">Female</option> </select> </div> </div> <div class="field-row single"> <div class="field-group"> <label>Smoker Status</label> <select id="secondIsSmoker" name="SecondIsSmoker"> <option value="false">Non-Smoker</option> <option value="true">Smoker</option> </select> </div> </div> <!-- Second life cover details --> <div class="sub-section"> <div class="sub-label">Cover Details</div> <div class="field-row"> <div class="field-group"> <label>Life Cover Amount (£)</label> <input id="secondLifeCoverAmount" name="SecondLifeCoverAmount" type="number" value="300000" /> </div> <div class="field-group"> <label>Life Cover Up to Age <span class="field-hint">46 – 99</span></label> <input id="secondLifeToAge" name="SecondLifeToAge" type="number" value="85" min="46" max="99" /> </div> </div> <div class="field-row"> <div class="field-group"> <label>Critical Illness Amount (£)</label> <input id="secondCiCoverAmount" name="SecondCiCoverAmount" type="number" value="30000" /> </div> <div class="field-group"> <label>CI Cover Up to Age <span class="field-hint">43 – 99</span></label> <input id="secondCiToAge" name="SecondCiToAge" type="number" value="70" min="43" max="99" /> </div> </div> <div class="field-row single"> <div class="field-group"> <label>Waiver of Premium</label> <select id="secondWaiverOfPremium" name="SecondWaiverOfPremium"> <option value="None" selected>None</option> <option value="SecondLife">SecondLife</option> </select> </div> </div> </div> </div> </div> </div> <!-- ── Policy Settings (shared) ── --> <div class="card settings"> <div class="card-header"> <h2>Policy Settings</h2> </div> <div class="card-body"> <div class="field-row triple"> <div class="field-group"> <label>Premium Type</label> <select id="premiumType" name="PremiumType"> <option value="Guaranteed" selected>Guaranteed</option> <option value="Reviewable">Reviewable</option> </select> </div> <div class="field-group"> <label>Indexation</label> <select id="indexation" name="Indexation"> <option value="Level" selected>Level</option> <option value="RPI">RPI</option> <option value="AWEI">AWEI</option> <option value="One">1%</option> <option value="Two">2%</option> <option value="Three">3%</option> <option value="Four">4%</option> <option value="Five">5%</option> <option value="Six">6%</option> <option value="Seven">7%</option> <option value="Eight">8%</option> <option value="Nine">9%</option> <option value="Ten">10%</option> </select> </div> <div class="field-group"> <label>Exclude Low Start</label> <select name="ExcludeLowStart"> <option value="False" selected>No</option> <option value="True">Yes</option> </select> </div> </div> </div> </div> <!-- ── Launch ── --> <div class="launch-wrap"> <button type="submit" class="launch-btn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"> <path d="M15 3h6v6M10 14L21 3M9 21H3v-6"/> </svg> Launch in iPipeline Solution Builder </button> <p class="launch-hint">Encrypts the payload into a 5-minute one-time token and auto-submits to iPipeline.</p> </div> </form> </div> <script> const CASES = [{"caseId":"WM-DEMO-001","displayName":"James Wilson \u2014 Single, Male, Non-Smoker (35 yrs)","firstLife":{"firstName":"James","lastName":"Wilson","dateOfBirth":"1989-03-15","gender":"Male","isSmoker":false},"secondLife":null},{"caseId":"WM-DEMO-002","displayName":"Sarah Mitchell \u2014 Single, Female, Smoker (33 yrs)","firstLife":{"firstName":"Sarah","lastName":"Mitchell","dateOfBirth":"1991-07-22","gender":"Female","isSmoker":true},"secondLife":null},{"caseId":"WM-DEMO-003","displayName":"Robert \u0026 Emma Clarke \u2014 Joint Life, Non-Smokers","firstLife":{"firstName":"Robert","lastName":"Clarke","dateOfBirth":"1978-11-08","gender":"Male","isSmoker":false},"secondLife":{"firstName":"Emma","lastName":"Clarke","dateOfBirth":"1980-05-14","gender":"Female","isSmoker":false}},{"caseId":"WM-DEMO-004","displayName":"David Thompson \u2014 Single, Male, Smoker (51 yrs)","firstLife":{"firstName":"David","lastName":"Thompson","dateOfBirth":"1972-09-30","gender":"Male","isSmoker":true},"secondLife":null},{"caseId":"WM-DEMO-005","displayName":"Michael \u0026 Lisa Brown \u2014 Joint Life, Both Smokers","firstLife":{"firstName":"Michael","lastName":"Brown","dateOfBirth":"1982-04-17","gender":"Male","isSmoker":true},"secondLife":{"firstName":"Lisa","lastName":"Brown","dateOfBirth":"1984-12-03","gender":"Female","isSmoker":true}}]; function loadCase(caseId) { const c = CASES.find(x => x.caseId === caseId); if (!c) return; setVal('firstFirstName', c.firstLife.firstName); setVal('firstLastName', c.firstLife.lastName); setVal('firstDateOfBirth', c.firstLife.dateOfBirth); setVal('firstGender', c.firstLife.gender); setVal('firstIsSmoker', c.firstLife.isSmoker ? 'true' : 'false'); const hasSecond = c.secondLife !== null; document.getElementById('hasSecondLife').checked = hasSecond; toggleSecondLife(hasSecond); if (hasSecond) { setVal('secondFirstName', c.secondLife.firstName); setVal('secondLastName', c.secondLife.lastName); setVal('secondDateOfBirth', c.secondLife.dateOfBirth); setVal('secondGender', c.secondLife.gender); setVal('secondIsSmoker', c.secondLife.isSmoker ? 'true' : 'false'); } } function setVal(id, val) { const el = document.getElementById(id); if (el) el.value = val ?? ''; } function toggleSecondLife(show) { document.getElementById('secondLifeSection').classList.toggle('visible', show); } </script> </body> </html>
2026-08-10 19:07:25.491 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Cases/Index responded 302 in 0.8048 ms
2026-08-10 19:07:25.491 +00:00 [INF] [HTTP] [U:-] [E:-] [C:edd88404bec2] HTTP GET /UI/Cases/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:06:08.951 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /demo/solution-builder/events responded 200 in 4.6346 ms
2026-08-10 19:06:08.950 +00:00 [INF] [HTTP] [U:-] [E:-] [C:fadee2235844] HTTP GET /demo/solution-builder/events 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>iPipeline Event Notifications — Wealthmax CRM</title> <style> *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #f1f5f9; color: #1e293b; min-height: 100vh; } .demo-header { background: #fff; border-bottom: 1px solid #e2e8f0; padding: .875rem 2rem; display: flex; align-items: center; gap: .875rem; } .demo-header h1 { font-size: 1.1rem; font-weight: 700; color: #0f172a; } .badge-demo { background: #f59e0b; color: #fff; font-size: .6rem; font-weight: 800; letter-spacing: .07em; padding: .2rem .5rem; border-radius: 9999px; text-transform: uppercase; } .demo-header p { margin-left: auto; font-size: .78rem; color: #94a3b8; } .demo-body { max-width: 980px; margin: 2rem auto; padding: 0 1.5rem 3rem; display: flex; flex-direction: column; gap: 1.25rem; } .card { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1.25rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; } .section-label { font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #6366f1; padding-bottom: .4rem; border-bottom: 1px solid #e2e8f0; } .field-group { display: flex; flex-direction: column; gap: .3rem; } .field-group label { font-size: .73rem; color: #64748b; font-weight: 500; } .field-group select { background: #fff; color: #0f172a; border: 1px solid #cbd5e1; border-radius: 6px; padding: .48rem .7rem; font-size: .875rem; transition: border-color .15s; width: 100%; } .field-group select:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99,102,241,.12); } .quote-btn { width: 100%; background: #6366f1; color: #fff; border: none; border-radius: 8px; padding: .78rem 1rem; font-size: .9rem; font-weight: 600; cursor: pointer; transition: background .15s, transform .1s; display: flex; align-items: center; justify-content: center; gap: .5rem; } .quote-btn:hover { background: #4f46e5; } .quote-btn:active { transform: scale(.98); } .quote-btn:disabled { background: #c7d2fe; cursor: not-allowed; } .hint { font-size: .72rem; color: #94a3b8; } .status { font-size: .8rem; color: #475569; min-height: 1.1rem; } .status.error { color: #dc2626; } /* ── Results ── */ .event-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1.1rem 1.3rem; display: flex; flex-direction: column; gap: .9rem; } .event-top { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; } .badge { font-size: .62rem; font-weight: 800; letter-spacing: .06em; padding: .2rem .5rem; border-radius: 9999px; text-transform: uppercase; color: #fff; } .badge.like { background: #0ea5e9; } .badge.apply { background: #16a34a; } .event-meta { font-size: .73rem; color: #64748b; } .event-meta b { color: #334155; font-weight: 600; } .group-label { font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #6366f1; margin-top: .3rem; } .comparison { border: 1px solid #e2e8f0; border-radius: 8px; padding: .8rem .9rem; display: flex; flex-direction: column; gap: .6rem; background: #f8fafc; } .comparison-head { font-size: .74rem; color: #475569; display: flex; gap: 1rem; flex-wrap: wrap; } table.quotes { width: 100%; border-collapse: collapse; font-size: .76rem; } table.quotes th, table.quotes td { text-align: left; padding: .4rem .55rem; border-bottom: 1px solid #e2e8f0; } table.quotes th { color: #64748b; font-weight: 600; background: #fff; } table.quotes td.num { text-align: right; font-variant-numeric: tabular-nums; } .benefit { font-size: .74rem; color: #334155; border-left: 3px solid #c7d2fe; padding: .25rem .6rem; background: #fff; border-radius: 4px; } .benefit .bt { font-weight: 700; color: #4f46e5; } .benefit .pairs { color: #64748b; } .empty { text-align: center; color: #94a3b8; font-size: .85rem; padding: 2rem; border: 1px dashed #cbd5e1; border-radius: 10px; background: #fff; } </style> </head> <body> <header class="demo-header"> <h1>iPipeline Event Notifications <span class="badge-demo">Demo</span></h1> <nav style="margin-left:auto;display:flex;gap:1rem;font-size:.8rem;"> <a href="/" style="color:#6366f1;text-decoration:none;">Home</a> <a href="/demo/solution-builder" style="color:#6366f1;text-decoration:none;">← Solution Builder</a> </nav> </header> <div class="demo-body"> <div class="card"> <div class="section-label">Get Quotes</div> <div class="field-group"> <label for="caseSelect">Demo Case</label> <select id="caseSelect"> <option value="">— All recent notifications —</option> <option value="WM-DEMO-001">James Wilson &#x2014; Single, Male, Non-Smoker (35 yrs) (WM-DEMO-001)</option> <option value="WM-DEMO-002">Sarah Mitchell &#x2014; Single, Female, Smoker (33 yrs) (WM-DEMO-002)</option> <option value="WM-DEMO-003">Robert &amp; Emma Clarke &#x2014; Joint Life, Non-Smokers (WM-DEMO-003)</option> <option value="WM-DEMO-004">David Thompson &#x2014; Single, Male, Smoker (51 yrs) (WM-DEMO-004)</option> <option value="WM-DEMO-005">Michael &amp; Lisa Brown &#x2014; Joint Life, Both Smokers (WM-DEMO-005)</option> </select> </div> <button id="getQuotesBtn" class="quote-btn" onclick="getQuotes()"> <svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2"> <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/> </svg> Get Quotes </button> <div id="status" class="status"></div> <p class="hint">The selected case ref is sent to iPipeline as the External Client Reference filter. Choose “All recent notifications” to fetch everything for the demo account (last 30 days).</p> </div> <div id="results"></div> </div> <script> const $ = id => document.getElementById(id); const esc = s => (s ?? '').toString().replace(/[&<>"']/g, m => ({ '&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;' }[m])); function fmtDate(s) { if (!s) return '—'; const d = new Date(s); return isNaN(d) ? s : d.toLocaleString(); } function fmtMoney(v) { if (v === null || v === undefined) return '—'; return '£' + Number(v).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); } async function getQuotes() { const caseRef = $('caseSelect').value; const btn = $('getQuotesBtn'); const status = $('status'); const results = $('results'); btn.disabled = true; status.className = 'status'; status.textContent = 'Contacting iPipeline…'; results.innerHTML = ''; try { const res = await fetch('/demo/solution-builder/events/data?caseRef=' + encodeURIComponent(caseRef)); const body = await res.json(); if (!body.success) { status.className = 'status error'; status.textContent = (body.errorCode || 'ERROR') + ': ' + (body.errorMessage || 'Request failed.'); return; } const events = body.data || []; status.textContent = events.length + ' notification(s) returned.'; renderEvents(events); } catch (e) { status.className = 'status error'; status.textContent = 'Request failed: ' + e.message; } finally { btn.disabled = false; } } function renderEvents(events) { const results = $('results'); if (!events.length) { results.innerHTML = '<div class="empty">No event notifications found for this selection.</div>'; return; } results.innerHTML = events.map(renderEvent).join(''); } function renderEvent(ev) { const cls = (ev.eventType || '').toLowerCase() === 'like' ? 'like' : 'apply'; const meta = [ ['Client', ev.sbClientId], ['External Ref', ev.externalClientReference], ['User', ev.userId], ['Request No', ev.requestNo], ['Event Key', ev.eventKey] ].filter(p => p[1] !== null && p[1] !== undefined && p[1] !== '') .map(p => `<b>${esc(p[0])}:</b> ${esc(p[1])}`).join(' &nbsp;·&nbsp; '); const applies = (ev.applies || []).map(a => renderApply(a)).join(''); const likes = (ev.likes || []).map(l => renderLike(l)).join(''); let body = ''; if (applies) body += `<div class="group-label">Applies</div>${applies}`; if (likes) body += `<div class="group-label">Likes</div>${likes}`; if (!applies && !likes) body += `<div class="event-meta">No model detail (likes/applies) returned for this event.</div>`; return ` <div class="event-card"> <div class="event-top"> <span class="badge ${cls}">${esc(ev.eventType)}</span> <span class="event-meta">${fmtDate(ev.eventTimeUtc)}</span> </div> <div class="event-meta">${meta}</div> ${body} </div>`; } function renderApply(a) { const head = `<b>Apply #${esc(a.applyId)}</b> · ${esc(a.applicationType)} · ${fmtDate(a.dateTimeApplied)}`; return wrapComparisons(head, a.comparisons); } function renderLike(l) { const head = `<b>Solution #${esc(l.solutionId)}</b> · ${esc(l.solutionType)} · ${fmtDate(l.dateTimeLiked)}`; return wrapComparisons(head, l.comparisons); } function wrapComparisons(head, comparisons) { const inner = (comparisons || []).map(renderComparison).join('') || '<div class="event-meta">No comparisons.</div>'; return `<div class="comparison"><div class="comparison-head">${head}</div>${inner}</div>`; } function renderComparison(c) { const head = [ ['Service', c.serviceId], ['IFA Ref', c.ifaReference], ['Expires', fmtDate(c.comparisonExpiryDate)] ].filter(p => p[1]).map(p => `${esc(p[0])}: ${esc(p[1])}`).join(' &nbsp;·&nbsp; '); const quotes = (c.quotes || []); const quotesTable = quotes.length ? ` <table class="quotes"> <thead><tr> <th>Quote ID</th><th>Product</th><th>Provider</th> <th class="num">Premium</th><th class="num">Commission</th> <th>Underwriting</th><th>Expiry</th> </tr></thead> <tbody> ${quotes.map(q => `<tr> <td><code>${esc(q.quoteId)}</code></td> <td>${esc(q.productName) || ('#' + esc(q.productId))}</td> <td>${esc(q.providerName)}</td> <td class="num">${fmtMoney(q.premium)}</td> <td class="num">${fmtMoney(q.commissionAmount)}</td> <td>${esc(q.overallUnderwritingDecision) || '—'}</td> <td>${fmtDate(q.expiryDate)}</td> </tr>`).join('')} </tbody> </table>` : ''; const benefits = (c.benefits || []).map(renderBenefit).join(''); return `<div style="display:flex;flex-direction:column;gap:.5rem;margin-top:.4rem"> ${head ? `<div class="comparison-head">${head}</div>` : ''} ${quotesTable} ${benefits} </div>`; } function renderBenefit(b) { const d = b.details || {}; const pairs = Object.entries(d) .filter(([, v]) => v !== null && v !== undefined && v !== '') .map(([k, v]) => `${esc(prettyKey(k))}: ${esc(v)}`) .join(' · '); return `<div class="benefit"><span class="bt">${esc(b.benefitType)}</span> ${pairs ? `<span class="pairs"> — ${pairs}</span>` : ''}</div>`; } function prettyKey(k) { return k.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase()).trim(); } </script> </body> </html>
2026-08-10 19:05:44.379 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.6731 ms
2026-08-10 19:05:44.379 +00:00 [INF] [HTTP] [U:-] [E:-] [C:dd0898415e35] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzqYJ5aLOK1KAsYgSgK50F4yXile8RgnKIDGuSZbvP69WnHF-Orkebu03R9sm1uCLR81i2peW99bLxPaCdL76O6IVp4MwJk8WnyDVVWjWa6hfQF29NDCWb04jB-v_eVmySQ" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:05:44.287 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Tokens/Index responded 302 in 0.8115 ms
2026-08-10 19:05:44.287 +00:00 [INF] [HTTP] [U:-] [E:-] [C:7ec163e8f1f7] HTTP GET /UI/Tokens/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:05:43.976 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 2.6564 ms
2026-08-10 19:05:43.975 +00:00 [INF] [HTTP] [U:-] [E:-] [C:d1c38b401c23] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzpvcHe5bYgjaWB9f5LCHnvp84e-m8xkf3l5pvu8v88BTf7YXt_oI3cwkxa75ub1uaARDdKd8ZsO8YPzx-fAxuuhGApXNy8zUps4gYola89fspW2dXrYsyYgdnWvL55X10w" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:05:43.883 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Templates/Index responded 302 in 0.6323 ms
2026-08-10 19:05:43.882 +00:00 [INF] [HTTP] [U:-] [E:-] [C:930439697ed3] HTTP GET /UI/Templates/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:05:43.788 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.8391 ms
2026-08-10 19:05:43.788 +00:00 [INF] [HTTP] [U:-] [E:-] [C:5aa0b86c3d71] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzpzFaXvKL7XOm7qw7uzPzD2xe9b0UKPhavmOY1ihyHhWLNdl6iXn0SE3oy6cFnGWmvXTv6vlJgpa_kFzHwK8b7F5XBwZPtCBTnG3rNcRQFqrCVr7Leo-8uBL7o-T-saBM8" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:05:31.695 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 2.0827 ms
2026-08-10 19:05:31.694 +00:00 [INF] [HTTP] [U:-] [E:-] [C:a5a6cdb20963] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzqSFHvw9d7uFFAM6Q8fuXuokdga4CCMvnyoKz-bcVl3lVRqBrOFfMngyJ9G5EoxVW0BQgGtANOT0BpJ0wNjNNuKNCsZxrZ8Ikl9-tvWveBpRtMZPC4lqi4ng-COLBosAR8" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:05:31.600 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Clients/Index responded 302 in 0.5742 ms
2026-08-10 19:05:31.600 +00:00 [INF] [HTTP] [U:-] [E:-] [C:a3e0f5a70234] HTTP GET /UI/Clients/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:04:39.934 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 1.7449 ms
2026-08-10 19:04:39.934 +00:00 [INF] [HTTP] [U:-] [E:-] [C:fcf2db91f29e] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzqsNYFHEhl2Lo9iNISz7rnYFH8X3JDDewdFOg7xn-WzeI2SNnkt2YDvXlE2Ylp6w_xl0UaJQtYCt6IahlsEK_mSO5u35TlbG4nlylRo_VMB3rU3q6BK-G841nDnKZjmQuU" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:04:39.841 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/FactFindGenerate responded 302 in 0.5553 ms
2026-08-10 19:04:39.841 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e67ebe5990a8] HTTP GET /UI/FactFindGenerate 302
Req: [no body] Res: [empty response]
2026-08-10 19:04:39.747 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /test-signalr.html responded 200 in 1.0088 ms
2026-08-10 19:04:39.746 +00:00 [INF] [HTTP] [U:-] [E:-] [C:-] HTTP GET /test-signalr.html 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SignalR Notification Hub Test</title> <style> body { font-family: Arial, sans-serif; max-width: 1000px; margin: 20px auto; padding: 20px; background: #f5f5f5; } .container { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); margin-bottom: 20px; } h1 { color: #333; margin-top: 0; } h2 { color: #666; font-size: 18px; margin-top: 20px; border-bottom: 2px solid #e0e0e0; padding-bottom: 5px; } .input-group { margin: 15px 0; } label { display: block; margin-bottom: 5px; color: #555; font-weight: bold; } input[type="text"], input[type="password"], select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; font-size: 14px; } select { background: white; cursor: pointer; } button { background: #007bff; color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; font-size: 14px; margin-right: 10px; } button:hover { background: #0056b3; } button:disabled { background: #ccc; cursor: not-allowed; } button.disconnect { background: #dc3545; } button.disconnect:hover { background: #c82333; } button.success-btn { background: #28a745; } button.success-btn:hover { background: #1e7e34; } .status { padding: 10px; border-radius: 4px; margin: 10px 0; font-weight: bold; } .status.disconnected { background: #f8d7da; color: #721c24; } .status.connected { background: #d4edda; color: #155724; } .status.connecting { background: #fff3cd; color: #856404; } #messages { max-height: 400px; overflow-y: auto; border: 1px solid #ddd; padding: 15px; background: #fafafa; border-radius: 4px; } .message { padding: 10px; margin: 5px 0; border-radius: 4px; background: white; border-left: 4px solid #007bff; } .message.error { border-left-color: #dc3545; background: #fff5f5; } .message.success { border-left-color: #28a745; background: #f0fff4; } .message.notification { background: #e7f3ff; border-left-color: #17a2b8; } .message-time { font-size: 11px; color: #999; margin-bottom: 5px; } .message-content { color: #333; } code { background: #f4f4f4; padding: 2px 6px; border-radius: 3px; font-family: 'Courier New', monospace; font-size: 13px; } .info-box { background: #e7f3ff; border-left: 4px solid #17a2b8; padding: 15px; margin: 15px 0; border-radius: 4px; } .info-box strong { color: #0c5460; } .otp-section { background: #fff3cd; border: 1px solid #ffc107; border-radius: 6px; padding: 15px; margin-top: 15px; } .otp-section h3 { margin-top: 0; color: #856404; font-size: 16px; } .badge { display: inline-block; padding: 2px 8px; border-radius: 12px; font-size: 12px; font-weight: bold; margin-left: 8px; } .badge.platform { background: #cfe2ff; color: #084298; } .badge.business { background: #d1e7dd; color: #0a3622; } .type-selector { display: flex; gap: 10px; margin: 15px 0; } .type-btn { flex: 1; padding: 12px; border: 2px solid #ddd; border-radius: 6px; background: white; color: #555; font-size: 15px; font-weight: bold; cursor: pointer; } .type-btn.active.platform { border-color: #084298; background: #cfe2ff; color: #084298; } .type-btn.active.business { border-color: #0a3622; background: #d1e7dd; color: #0a3622; } .type-btn:hover:not(.active) { border-color: #999; background: #f8f9fa; } </style> </head> <body> <div class="container"> <h1>🔔 SignalR Notification Hub Test</h1> <div class="info-box"> <strong>How to connect:</strong> <ol style="margin: 10px 0 0 0; padding-left: 20px;"> <li>Select your user type: <strong>Platform</strong> (super-admin) or <strong>Business</strong> (adviser/tenant user)</li> <li>Enter the API URL, email, and password then click <strong>Login &amp; Send OTP</strong></li> <li>Check your email for the 6-digit OTP code</li> <li>Enter the OTP and click <strong>Verify OTP &amp; Get Token</strong> — the JWT is auto-filled</li> <li>Click <strong>Connect to Hub</strong> to open the SignalR connection</li> <li>Trigger events in the system and watch real-time notifications appear below</li> </ol> </div> <h2>Step 1: Choose User Type</h2> <div class="type-selector"> <button class="type-btn platform" id="btnPlatform" onclick="setUserType('platform')"> 🏢 Platform User<br><small style="font-weight:normal">Super-admin / platform staff</small> </button> <button class="type-btn business" id="btnBusiness" onclick="setUserType('business')"> 👤 Business User<br><small style="font-weight:normal">Adviser / tenant user</small> </button> </div> <div id="userTypeBadge" style="margin-bottom:10px; font-size:14px; color:#555;"> Selected: <span id="selectedTypeLabel"><em>none</em></span> </div> <h2>Step 2: Login &amp; Get OTP</h2> <div class="input-group"> <label>API Base URL:</label> <input type="text" id="apiUrl" value="http://localhost:8099" placeholder="http://localhost:[port]"> </div> <div class="input-group"> <label>Email:</label> <input type="text" id="email" placeholder="example@wealthmax.co.uk"> </div> <div class="input-group"> <label>Password:</label> <input type="password" id="password" placeholder="Enter password"> </div> <button onclick="login()" id="loginBtn">Login &amp; Send OTP</button> <div id="otpSection" class="otp-section" style="display:none;"> <h3>📧 OTP Sent — Check Your Email</h3> <p style="margin:0 0 10px 0; color:#856404;">Enter the 6-digit code from your email:</p> <div class="input-group" style="margin:0;"> <input type="text" id="otpCode" maxlength="6" placeholder="000000" style="letter-spacing:6px; font-size:22px; text-align:center;"> </div> <br> <button class="success-btn" onclick="verifyOtp()" id="verifyBtn">Verify OTP &amp; Get Token</button> <button onclick="login()" style="background:#6c757d;">Resend OTP</button> <p id="challengeInfo" style="font-size:12px; color:#999; margin-top:8px;"></p> </div> <h2>Step 3: Connect to SignalR Hub</h2> <div class="input-group"> <label>JWT Token: <span style="font-weight:normal; font-size:12px; color:#999;">(auto-filled after OTP verify, or paste manually)</span></label> <input type="text" id="token" placeholder="Paste your JWT token here (or complete login above)"> </div> <div id="status" class="status disconnected">⚫ Disconnected</div> <button id="connectBtn" onclick="connect()">Connect to Hub</button> <button id="disconnectBtn" onclick="disconnect()" class="disconnect" disabled>Disconnect</button> <button onclick="clearMessages()">Clear Messages</button> <h2>Connection Log &amp; Notifications</h2> <div id="messages"></div> </div> <script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@latest/dist/browser/signalr.min.js"></script> <script> let connection = null; let currentUserType = null; // 'platform' | 'business' let currentChallengeToken = null; const messagesDiv = document.getElementById('messages'); const statusDiv = document.getElementById('status'); const connectBtn = document.getElementById('connectBtn'); const disconnectBtn = document.getElementById('disconnectBtn'); const tokenInput = document.getElementById('token'); const otpSection = document.getElementById('otpSection'); function setUserType(type) { currentUserType = type; document.getElementById('btnPlatform').classList.toggle('active', type === 'platform'); document.getElementById('btnBusiness').classList.toggle('active', type === 'business'); document.getElementById('selectedTypeLabel').textContent = type === 'platform' ? 'Platform User (super-admin)' : 'Business User (adviser/tenant)'; otpSection.style.display = 'none'; currentChallengeToken = null; } // Default to platform on load setUserType('platform'); function addMessage(text, type = 'info') { const messageDiv = document.createElement('div'); messageDiv.className = `message ${type}`; const timeDiv = document.createElement('div'); timeDiv.className = 'message-time'; timeDiv.textContent = new Date().toLocaleTimeString(); const contentDiv = document.createElement('div'); contentDiv.className = 'message-content'; if (typeof text === 'object') { contentDiv.innerHTML = `<pre>${JSON.stringify(text, null, 2)}</pre>`; } else { contentDiv.textContent = text; } messageDiv.appendChild(timeDiv); messageDiv.appendChild(contentDiv); messagesDiv.insertBefore(messageDiv, messagesDiv.firstChild); } function updateStatus(text, state) { statusDiv.textContent = text; statusDiv.className = `status ${state}`; } async function login() { if (!currentUserType) { addMessage('❌ Please select a user type first (Platform or Business)', 'error'); return; } const apiUrl = document.getElementById('apiUrl').value.trim(); const email = document.getElementById('email').value.trim(); const password = document.getElementById('password').value; if (!apiUrl || !email || !password) { addMessage('❌ Please fill in API URL, email, and password', 'error'); return; } const endpoint = currentUserType === 'platform' ? `${apiUrl}/api/Auth/login` : `${apiUrl}/api/v1/business/auth/login`; addMessage(`🔑 [${currentUserType.toUpperCase()}] Sending login request for ${email}...`, 'info'); try { const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }) }); const data = await response.json(); if (!response.ok || !data.success) { addMessage(`❌ Login failed: ${data.error?.message || data.message || 'Unknown error'}`, 'error'); return; } currentChallengeToken = data.data.challengeToken; const expiresIn = data.data.otpExpiresInSeconds ?? data.data.oTPExpiresInSeconds ?? '?'; addMessage(`✅ Login accepted — OTP sent to ${email}`, 'success'); addMessage(`⏱️ OTP expires in ${expiresIn} seconds`, 'info'); document.getElementById('challengeInfo').textContent = `Challenge token received. OTP expires in ${expiresIn}s.`; document.getElementById('otpCode').value = ''; otpSection.style.display = 'block'; document.getElementById('otpCode').focus(); } catch (error) { addMessage(`❌ Login error: ${error.message}`, 'error'); } } async function verifyOtp() { if (!currentChallengeToken) { addMessage('❌ No active login session — click "Login & Send OTP" first', 'error'); return; } const apiUrl = document.getElementById('apiUrl').value.trim(); const otp = document.getElementById('otpCode').value.trim(); if (otp.length !== 6 || !/^\d{6}$/.test(otp)) { addMessage('❌ OTP must be exactly 6 digits', 'error'); return; } const endpoint = currentUserType === 'platform' ? `${apiUrl}/api/Auth/verify-2fa` : `${apiUrl}/api/v1/business/auth/verify-2fa`; // Field name differs: platform uses "code", business uses "otp" const body = currentUserType === 'platform' ? { challengeToken: currentChallengeToken, code: otp } : { challengeToken: currentChallengeToken, otp }; addMessage(`🔐 Verifying OTP...`, 'info'); try { const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }); const data = await response.json(); if (!response.ok || !data.success) { addMessage(`❌ OTP verification failed: ${data.error?.message || data.message || 'Invalid OTP'}`, 'error'); return; } const accessToken = data.data.accessToken; if (!accessToken) { addMessage('❌ Token not found in response', 'error'); return; } tokenInput.value = accessToken; currentChallengeToken = null; otpSection.style.display = 'none'; const userName = data.data.user?.fullName ?? data.data.user?.email ?? email; addMessage(`✅ OTP verified! Token auto-filled for ${userName}`, 'success'); addMessage(`ℹ️ Click "Connect to Hub" to open the SignalR connection`, 'info'); } catch (error) { addMessage(`❌ OTP verify error: ${error.message}`, 'error'); } } // Allow pressing Enter in OTP field to submit document.getElementById('otpCode').addEventListener('keydown', e => { if (e.key === 'Enter') verifyOtp(); }); async function connect() { const token = tokenInput.value.trim(); const apiUrl = document.getElementById('apiUrl').value.trim(); if (!token) { addMessage('❌ Please complete login first to get a JWT token', 'error'); return; } try { updateStatus('🟡 Connecting...', 'connecting'); connectBtn.disabled = true; const hubUrl = `${apiUrl}/hubs/notifications`; addMessage(`📡 Connecting to ${hubUrl}...`, 'info'); connection = new signalR.HubConnectionBuilder() .withUrl(hubUrl, { accessTokenFactory: () => token }) .withAutomaticReconnect() .configureLogging(signalR.LogLevel.Information) .build(); connection.onclose((error) => { updateStatus('⚫ Disconnected', 'disconnected'); connectBtn.disabled = false; disconnectBtn.disabled = true; if (error) addMessage(`❌ Connection closed with error: ${error}`, 'error'); else addMessage('🔌 Connection closed', 'info'); }); connection.onreconnecting((error) => { updateStatus('🟡 Reconnecting...', 'connecting'); addMessage(`🔄 Reconnecting... ${error || ''}`, 'info'); }); connection.onreconnected((connectionId) => { updateStatus('🟢 Connected', 'connected'); addMessage(`✅ Reconnected! Connection ID: ${connectionId}`, 'success'); }); connection.on("ReceiveNotification", (notification) => { addMessage({ type: 'NOTIFICATION', title: notification.title, message: notification.message, audienceType: notification.audienceType, metadata: notification.metadata }, 'notification'); }); connection.on("ReceiveNotificationCount", (count) => { addMessage(`📊 Unread notification count: ${count}`, 'info'); }); await connection.start(); updateStatus('🟢 Connected', 'connected'); connectBtn.disabled = true; disconnectBtn.disabled = false; addMessage(`✅ Successfully connected to SignalR hub!`, 'success'); addMessage(`🎯 Connection ID: ${connection.connectionId}`, 'success'); addMessage(`👂 Listening for notifications...`, 'info'); } catch (error) { updateStatus('⚫ Connection Failed', 'disconnected'); connectBtn.disabled = false; disconnectBtn.disabled = true; addMessage(`❌ Connection error: ${error.message}`, 'error'); if (error.message.includes('401')) { addMessage('🔐 Authentication failed — your token may be expired. Try logging in again.', 'error'); } } } async function disconnect() { if (connection) { try { await connection.stop(); addMessage('🔌 Disconnected from hub', 'info'); updateStatus('⚫ Disconnected', 'disconnected'); connectBtn.disabled = false; disconnectBtn.disabled = true; } catch (error) { addMessage(`❌ Disconnect error: ${error.message}`, 'error'); } } } function clearMessages() { messagesDiv.innerHTML = ''; addMessage('🗑️ Messages cleared', 'info'); } window.addEventListener('load', () => { addMessage('👋 SignalR Hub Test Client Ready', 'info'); addMessage('ℹ️ Select a user type and follow the steps above to connect', 'info'); }); </script> </body> </html>
2026-08-10 19:03:57.920 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/business/login responded 200 in 8.0886 ms
2026-08-10 19:03:57.919 +00:00 [INF] [HTTP] [U:-] [E:-] [C:762d37ec15e5] HTTP GET /UI/business/login 200
Req: [no body] Res: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sign In - Wealthmax</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=xQHUTQJdpYJFKIjDlFCI1X8KDqtO5qaSSeJFSoCP3pA" /> <style> html, body { height: 100%; } body { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; background-color: #f5f7fa; } .login-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 1.5rem; } .brand-logo { margin-bottom: 1.75rem; text-align: center; } .brand-logo span { font-size: 1.4rem; font-weight: 700; color: #1a1a2e; letter-spacing: -0.5px; } .brand-logo small { display: block; font-size: 0.7rem; color: #6c757d; font-weight: 500; text-transform: uppercase; letter-spacing: 1px; margin-top: 2px; } </style> </head> <body> <div class="login-wrapper"> <div class="brand-logo"> <span>Wealthmax</span> <small>PM CRM</small> </div> <div class="card shadow-sm" style="width: 100%; max-width: 400px;"> <div class="card-body p-4"> <h4 class="card-title mb-1 fw-semibold">Sign In</h4> <p class="text-muted small mb-4">Enter your credentials to access the portal.</p> <form method="post" novalidate action="/UI/business/login"> <div class="mb-3"> <label class="form-label" for="Email">Email</label> <input class="form-control" placeholder="you@example.com" autofocus type="email" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="The Email field is required." id="Email" name="Email" value="" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> </div> <div class="mb-4"> <label class="form-label" for="Password">Password</label> <input type="password" class="form-control" placeholder="••••••••" data-val="true" data-val-minlength="The field Password must be a string or array type with a minimum length of &#x27;8&#x27;." data-val-minlength-min="8" data-val-required="The Password field is required." id="Password" name="Password" /> <span class="text-danger small field-validation-valid" data-valmsg-for="Password" data-valmsg-replace="true"></span> </div> <button type="submit" class="btn btn-primary w-100">Sign In</button> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8PkPKADDi0hCi7-PdeVDOzpJ4MgPWPZa_-ExCHxBhwo-xP8wbS1tUiFm9wvKzHfvxq-iGFI0ZCv4hCiHTlEyLVb-AaZYn5txQw3_3taLT354iwIYCcAWOioNiKrpJ24X5I2GaEs0-W08gdoWbMW8y5A" /></form> <div class="mt-3 text-center"> <a href="/UI/business/forgot-password" class="small text-decoration-none">Forgot password?</a> </div> </div> </div> </div> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/jquery-validation/dist/jquery.validate.min.js"></script> <script src="/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script> </body> </html>
2026-08-10 19:03:57.819 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /UI/Reporting/Index responded 302 in 0.5947 ms
2026-08-10 19:03:57.819 +00:00 [INF] [HTTP] [U:-] [E:-] [C:2d4b59d53437] HTTP GET /UI/Reporting/Index 302
Req: [no body] Res: [empty response]
2026-08-10 19:03:07.773 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /css/commissions.css responded 200 in 1.0770 ms
2026-08-10 19:03:07.773 +00:00 [INF] [HTTP] [U:-] [E:-] [C:-] HTTP GET /css/commissions.css 200
Req: [no body] Res: /* ============================================================ Wealthmax UI — scoped clean-fintech light theme Applies under .commissions-area (Commissions module) and .wm-ui-area (all other modernised UI pages) so that the design tokens and cm-* components are shared across the app without leaking into legacy Bootstrap pages. ============================================================ */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); /* ── Design tokens ─────────────────────────────────────────── */ .commissions-area, .wm-ui-area { --cm-canvas: #f4f6fb; --cm-surface: #ffffff; --cm-border: #e8ecf4; --cm-border-light: #f0f3f9; --cm-radius: 14px; --cm-radius-sm: 8px; --cm-shadow: 0 1px 3px rgba(30,41,80,.06), 0 4px 16px rgba(30,41,80,.07); --cm-shadow-hover: 0 4px 12px rgba(30,41,80,.10), 0 12px 32px rgba(30,41,80,.10); --cm-font: 'Inter', system-ui, -apple-system, sans-serif; --cm-accent: #4361ee; --cm-accent-muted: #eef1fc; --cm-text: #1a2035; --cm-text-muted: #7b8ab8; --cm-text-light: #a8b4d0; --cm-green: #10b981; --cm-green-muted: #ecfdf5; --cm-amber: #f59e0b; --cm-amber-muted: #fffbeb; --cm-red: #ef4444; --cm-red-muted: #fef2f2; --cm-blue: #3b82f6; --cm-blue-muted: #eff6ff; --cm-violet: #8b5cf6; --cm-violet-muted: #f5f3ff; --cm-slate: #64748b; --cm-slate-muted: #f8fafc; font-family: var(--cm-font); background-color: var(--cm-canvas); color: var(--cm-text); } /* ── Page background (full main viewport) ───────────────────── */ .commissions-area .page-bg-fix { background: var(--cm-canvas); } /* ── Page header ────────────────────────────────────────────── */ .cm-page-head { margin-bottom: 1.75rem; } .cm-page-head h3, .cm-page-head .cm-title { font-size: 1.5rem; font-weight: 700; color: var(--cm-text); letter-spacing: -0.02em; margin: 0; } .cm-page-head .cm-subtitle { font-size: 0.8125rem; color: var(--cm-text-muted); margin-top: 0.2rem; } /* ── Preview badge (replaces the stock warning badge) ───────── */ .cm-preview-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 8px; border-radius: 20px; background: #fff8e6; color: #b45309; border: 1px solid #fcd34d; vertical-align: middle; } /* ── KPI tiles ───────────────────────────────────────────────── */ .cm-kpi { background: var(--cm-surface); border-radius: var(--cm-radius); box-shadow: var(--cm-shadow); padding: 1.25rem 1.375rem; position: relative; overflow: hidden; transition: box-shadow .18s, transform .18s; border: 1px solid var(--cm-border-light); } .cm-kpi:hover { box-shadow: var(--cm-shadow-hover); transform: translateY(-2px); } .cm-kpi::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; border-radius: var(--cm-radius) var(--cm-radius) 0 0; } .cm-kpi-green::before { background: linear-gradient(90deg, #10b981, #34d399); } .cm-kpi-amber::before { background: linear-gradient(90deg, #f59e0b, #fbbf24); } .cm-kpi-blue::before { background: linear-gradient(90deg, #3b82f6, #60a5fa); } .cm-kpi-red::before { background: linear-gradient(90deg, #ef4444, #f87171); } .cm-kpi-violet::before { background: linear-gradient(90deg, #8b5cf6, #a78bfa); } .cm-kpi-slate::before { background: linear-gradient(90deg, #64748b, #94a3b8); } .cm-kpi-icon { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1rem; margin-bottom: 0.875rem; flex-shrink: 0; } .cm-kpi-green .cm-kpi-icon { background: var(--cm-green-muted); color: var(--cm-green); } .cm-kpi-amber .cm-kpi-icon { background: var(--cm-amber-muted); color: var(--cm-amber); } .cm-kpi-blue .cm-kpi-icon { background: var(--cm-blue-muted); color: var(--cm-blue); } .cm-kpi-red .cm-kpi-icon { background: var(--cm-red-muted); color: var(--cm-red); } .cm-kpi-violet .cm-kpi-icon { background: var(--cm-violet-muted); color: var(--cm-violet); } .cm-kpi-slate .cm-kpi-icon { background: var(--cm-slate-muted); color: var(--cm-slate); } .cm-kpi-label { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase; color: var(--cm-text-muted); margin-bottom: 0.25rem; } .cm-kpi-value { font-size: 1.625rem; font-weight: 700; color: var(--cm-text); letter-spacing: -0.025em; line-height: 1.1; } .cm-kpi-sub { font-size: 0.75rem; color: var(--cm-text-muted); margin-top: 0.3rem; } /* ── Cards ───────────────────────────────────────────────────── */ .cm-card { background: var(--cm-surface); border-radius: var(--cm-radius); box-shadow: var(--cm-shadow); border: 1px solid var(--cm-border-light); overflow: hidden; } .cm-card-header { padding: 1rem 1.375rem; border-bottom: 1px solid var(--cm-border); display: flex; align-items: center; justify-content: space-between; gap: 1rem; background: var(--cm-surface); } .cm-card-header-title { font-size: 0.875rem; font-weight: 600; color: var(--cm-text); display: flex; align-items: center; gap: 0.5rem; } .cm-card-header-title i { color: var(--cm-accent); font-size: 1rem; } .cm-card-header-meta { font-size: 0.75rem; color: var(--cm-text-muted); } .cm-card-body { padding: 1.25rem 1.375rem; } /* Nav cards (dashboard) */ .cm-nav-card { background: var(--cm-surface); border-radius: var(--cm-radius); box-shadow: var(--cm-shadow); border: 1px solid var(--cm-border-light); padding: 1.25rem 1.375rem; display: flex; align-items: flex-start; gap: 1rem; text-decoration: none; transition: box-shadow .18s, transform .18s, border-color .18s; height: 100%; } .cm-nav-card:hover { box-shadow: var(--cm-shadow-hover); transform: translateY(-3px); border-color: var(--cm-accent); text-decoration: none; } .cm-nav-card-icon { width: 44px; height: 44px; border-radius: 12px; background: var(--cm-accent-muted); color: var(--cm-accent); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; flex-shrink: 0; } .cm-nav-card-title { font-size: 0.9rem; font-weight: 600; color: var(--cm-text); margin-bottom: 0.25rem; } .cm-nav-card-desc { font-size: 0.78rem; color: var(--cm-text-muted); line-height: 1.4; margin: 0; } /* ── Tables ──────────────────────────────────────────────────── */ .commissions-area .cm-table, .wm-ui-area .cm-table { margin: 0; font-size: 0.8375rem; color: var(--cm-text); border-collapse: collapse; width: 100%; } .commissions-area .cm-table thead th, .wm-ui-area .cm-table thead th { background: var(--cm-canvas); color: var(--cm-text-muted); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; padding: 0.75rem 1rem; border-bottom: 1px solid var(--cm-border); border-top: none; white-space: nowrap; } .commissions-area .cm-table tbody td, .wm-ui-area .cm-table tbody td { padding: 0.75rem 1rem; border-bottom: 1px solid var(--cm-border-light); vertical-align: middle; } .commissions-area .cm-table tbody tr:last-child td, .wm-ui-area .cm-table tbody tr:last-child td { border-bottom: none; } .commissions-area .cm-table tbody tr:hover td, .wm-ui-area .cm-table tbody tr:hover td { background: var(--cm-canvas); } .commissions-area .cm-table tfoot td, .wm-ui-area .cm-table tfoot td { padding: 0.75rem 1rem; border-top: 2px solid var(--cm-border); background: var(--cm-canvas); font-weight: 600; font-size: 0.8375rem; } /* ── Badges / pills ──────────────────────────────────────────── */ .cm-pill { display: inline-flex; align-items: center; gap: 3px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.02em; padding: 2px 9px; border-radius: 20px; line-height: 1.6; white-space: nowrap; } .cm-pill-green { background: var(--cm-green-muted); color: #065f46; } .cm-pill-amber { background: var(--cm-amber-muted); color: #92400e; } .cm-pill-blue { background: var(--cm-blue-muted); color: #1e40af; } .cm-pill-red { background: var(--cm-red-muted); color: #991b1b; } .cm-pill-violet { background: var(--cm-violet-muted); color: #5b21b6; } .cm-pill-slate { background: var(--cm-slate-muted); color: #334155; border: 1px solid #e2e8f0; } .cm-pill-info { background: #eff6ff; color: #1e40af; } .cm-pill-warn { background: var(--cm-amber-muted); color: #92400e; } /* ── Buttons ─────────────────────────────────────────────────── */ .commissions-area .cm-btn-back, .wm-ui-area .cm-btn-back { font-size: 0.8125rem; font-weight: 500; padding: 0.375rem 0.875rem; border-radius: var(--cm-radius-sm); border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); text-decoration: none; display: inline-flex; align-items: center; gap: 0.35rem; transition: border-color .14s, color .14s, background .14s; } .commissions-area .cm-btn-back:hover, .wm-ui-area .cm-btn-back:hover { border-color: var(--cm-accent); color: var(--cm-accent); background: var(--cm-accent-muted); text-decoration: none; } .commissions-area .cm-btn-primary, .wm-ui-area .cm-btn-primary { font-size: 0.8125rem; font-weight: 500; padding: 0.375rem 0.875rem; border-radius: var(--cm-radius-sm); border: 1px solid var(--cm-accent); background: var(--cm-accent); color: #fff; text-decoration: none; display: inline-flex; align-items: center; gap: 0.35rem; transition: opacity .14s; } .commissions-area .cm-btn-primary:hover, .wm-ui-area .cm-btn-primary:hover { opacity: 0.88; color: #fff; text-decoration: none; } .commissions-area .cm-btn-action, .wm-ui-area .cm-btn-action { font-size: 0.75rem; font-weight: 500; padding: 0.25rem 0.625rem; border-radius: 6px; border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); text-decoration: none; display: inline-flex; align-items: center; gap: 0.25rem; transition: border-color .14s, color .14s; white-space: nowrap; } .commissions-area .cm-btn-action:hover, .wm-ui-area .cm-btn-action:hover { border-color: var(--cm-accent); color: var(--cm-accent); text-decoration: none; } .commissions-area .cm-btn-action.cm-btn-action-primary, .wm-ui-area .cm-btn-action.cm-btn-action-primary { border-color: var(--cm-accent); color: var(--cm-accent); } .commissions-area .cm-btn-action.cm-btn-action-primary:hover, .wm-ui-area .cm-btn-action.cm-btn-action-primary:hover { background: var(--cm-accent-muted); } /* ── Form controls inside tables ─────────────────────────────── */ .commissions-area .cm-table .form-control, .wm-ui-area .cm-table .form-control { font-size: 0.8125rem; border-radius: 6px; border-color: var(--cm-border); background: var(--cm-canvas); color: var(--cm-text); } .commissions-area .cm-table .input-group-text, .wm-ui-area .cm-table .input-group-text { font-size: 0.8125rem; background: var(--cm-border-light); border-color: var(--cm-border); color: var(--cm-text-muted); } /* ── Info callout ────────────────────────────────────────────── */ .cm-callout { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.875rem 1rem; border-radius: var(--cm-radius-sm); font-size: 0.8rem; line-height: 1.5; border: 1px solid; } .cm-callout-info { background: var(--cm-blue-muted); border-color: #bfdbfe; color: #1e40af; } .cm-callout-warn { background: var(--cm-amber-muted); border-color: #fde68a; color: #92400e; } .cm-callout-success { background: var(--cm-green-muted); border-color: #a7f3d0; color: #065f46; } .cm-callout-danger { background: var(--cm-red-muted); border-color: #fecaca; color: #991b1b; } .cm-callout i { margin-top: 1px; flex-shrink: 0; font-size: 0.95rem; } /* ── Audit / event stream ────────────────────────────────────── */ .cm-event-list { list-style: none; padding: 0; margin: 0; } .cm-event-item { padding: 0.875rem 0; border-bottom: 1px solid var(--cm-border-light); display: flex; flex-direction: column; gap: 0.25rem; } .cm-event-item:last-child { border-bottom: none; } .cm-event-header { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; } .cm-event-type { font-size: 0.8375rem; font-weight: 600; color: var(--cm-text); display: flex; align-items: center; gap: 0.375rem; } .cm-event-ref { font-size: 0.7rem; font-weight: 500; padding: 1px 7px; border-radius: 4px; background: var(--cm-canvas); border: 1px solid var(--cm-border); color: var(--cm-text-muted); font-family: ui-monospace, 'Cascadia Code', monospace; } .cm-event-meta { font-size: 0.75rem; color: var(--cm-text-light); white-space: nowrap; } .cm-event-detail { font-size: 0.78rem; color: var(--cm-text-muted); } /* ── Metadata row (key/value pairs) ─────────────────────────── */ .cm-meta-row { display: flex; justify-content: space-between; align-items: center; padding: 0.45rem 0; border-bottom: 1px solid var(--cm-border-light); font-size: 0.8125rem; } .cm-meta-row:last-child { border-bottom: none; } .cm-meta-label { color: var(--cm-text-muted); } .cm-meta-value { font-weight: 600; color: var(--cm-text); } /* ── Total banner (Profile page) ────────────────────────────── */ .cm-total-banner { border-radius: var(--cm-radius-sm); padding: 0.75rem 1rem; display: flex; align-items: center; gap: 0.5rem; font-size: 0.8375rem; font-weight: 500; border: 1px solid; margin-top: 1rem; } .cm-total-banner.ok { background: var(--cm-green-muted); border-color: #a7f3d0; color: #065f46; } .cm-total-banner.err { background: var(--cm-red-muted); border-color: #fecaca; color: #991b1b; } /* ── Section divider label ───────────────────────────────────── */ .cm-section-label { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--cm-text-muted); margin-bottom: 0.75rem; padding-bottom: 0.4rem; border-bottom: 1px solid var(--cm-border-light); } /* ── Tabbed output card (shared by AllocationDetail + Lifecycle) ─ */ .commissions-area .sim-tabs-card, .wm-ui-area .sim-tabs-card { overflow: visible; } .commissions-area .sim-tabnav, .wm-ui-area .sim-tabnav { display: flex; gap: 2px; padding: 0 0.5rem; border-bottom: 1px solid var(--cm-border); background: var(--cm-canvas); border-radius: var(--cm-radius) var(--cm-radius) 0 0; flex-wrap: wrap; } .commissions-area .sim-tab, .wm-ui-area .sim-tab { position: relative; border: none; background: transparent; cursor: pointer; font-size: 0.8125rem; font-weight: 600; color: var(--cm-text-muted); padding: 0.75rem 0.95rem; display: inline-flex; align-items: center; gap: 0.4rem; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color .14s, border-color .14s; } .commissions-area .sim-tab i, .wm-ui-area .sim-tab i { font-size: 0.9rem; } .commissions-area .sim-tab:hover, .wm-ui-area .sim-tab:hover { color: var(--cm-text); } .commissions-area .sim-tab.is-active, .wm-ui-area .sim-tab.is-active { color: var(--cm-accent); border-bottom-color: var(--cm-accent); } .commissions-area .sim-tab-sub, .wm-ui-area .sim-tab-sub { font-weight: 400; color: var(--cm-text-muted); font-size: 0.75rem; } .commissions-area .sim-tab-count, .wm-ui-area .sim-tab-count { font-size: 0.68rem; font-weight: 700; line-height: 1; padding: 2px 6px; border-radius: 20px; background: var(--cm-accent-muted); color: var(--cm-accent); } .commissions-area .sim-tabpanel, .wm-ui-area .sim-tabpanel { display: none; } .commissions-area .sim-tabpanel.is-active, .wm-ui-area .sim-tabpanel.is-active { display: block; } /* Toolbar strip inside a panel (legend / heading row) */ .commissions-area .sim-panel-toolbar, .wm-ui-area .sim-panel-toolbar { padding: 0.75rem 1.375rem; border-bottom: 1px solid var(--cm-border-light); background: var(--cm-surface); } .commissions-area .sim-panel-toolbar-between, .wm-ui-area .sim-panel-toolbar-between { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; } .commissions-area .sim-panel-heading, .wm-ui-area .sim-panel-heading { font-size: 0.8rem; font-weight: 600; color: var(--cm-text); } /* Stronger totals band in a ledger footer */ .commissions-area .cm-table.cm-table-totals tfoot td, .wm-ui-area .cm-table.cm-table-totals tfoot td { border-top: 2px solid var(--cm-accent); background: var(--cm-accent-muted); color: var(--cm-text); } .commissions-area .cm-table.cm-table-totals tfoot td:first-child, .wm-ui-area .cm-table.cm-table-totals tfoot td:first-child { text-transform: uppercase; letter-spacing: 0.05em; font-size: 0.72rem; color: var(--cm-accent); } /* Bounded event-log items so entries don't blend together */ .commissions-area .cm-event-list.cm-event-list-cards .cm-event-item, .wm-ui-area .cm-event-list.cm-event-list-cards .cm-event-item { padding: 0.75rem 0.85rem; margin-bottom: 0.55rem; border: 1px solid var(--cm-border-light); border-left-width: 3px; border-radius: var(--cm-radius-sm); background: var(--cm-surface); } .commissions-area .cm-event-list.cm-event-list-cards .cm-event-item:last-child, .wm-ui-area .cm-event-list.cm-event-list-cards .cm-event-item:last-child { margin-bottom: 0; } /* ── Chart legend ────────────────────────────────────────────── */ .cm-legend { display: flex; gap: 1.25rem; flex-wrap: wrap; font-size: 0.75rem; color: var(--cm-text-muted); align-items: center; } .cm-legend-item { display: flex; align-items: center; gap: 5px; } .cm-legend-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex-shrink: 0; } .cm-legend-dot-circle { border-radius: 50%; } /* ── Form controls (wm-ui-area pages: Reporting, Templates, etc.) */ .wm-ui-area .form-control, .wm-ui-area .form-select { font-size: 0.8375rem; border-color: var(--cm-border); border-radius: var(--cm-radius-sm); background: var(--cm-surface); color: var(--cm-text); } .wm-ui-area .form-control:focus, .wm-ui-area .form-select:focus { border-color: var(--cm-accent); box-shadow: 0 0 0 3px rgba(67,97,238,.12); } .wm-ui-area .form-label { font-size: 0.8rem; font-weight: 600; color: var(--cm-text-muted); letter-spacing: 0.02em; } .wm-ui-area .form-check-input:checked { background-color: var(--cm-accent); border-color: var(--cm-accent); } /* ── Status badge override (replaces Bootstrap badge) ─────────── */ .wm-ui-area .cm-status-active { background: var(--cm-green-muted); color: #065f46; } .wm-ui-area .cm-status-inactive { background: var(--cm-slate-muted); color: #334155; border: 1px solid #e2e8f0; } .wm-ui-area .cm-status-system { background: var(--cm-blue-muted); color: #1e40af; } /* ── Pagination ─────────────────────────────────────────────── */ .wm-ui-area .pagination .page-link { font-size: 0.8rem; color: var(--cm-text-muted); border-color: var(--cm-border); background: var(--cm-surface); } .wm-ui-area .pagination .page-item.active .page-link { background: var(--cm-accent); border-color: var(--cm-accent); color: #fff; } /* ── Upload Commission Statement modal ─────────────────────────── */ .cm-upload-modal { border-radius: var(--cm-radius); border: 1px solid var(--cm-border); } .cm-upload-icon { width: 44px; height: 44px; flex-shrink: 0; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--cm-accent-muted); color: var(--cm-accent); font-size: 1.1rem; } .cm-upload-template-card { display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem 1rem; margin: 1rem 0; border-radius: var(--cm-radius-sm); background: var(--cm-canvas); border: 1px solid var(--cm-border-light); } .cm-upload-template-icon { width: 34px; height: 34px; flex-shrink: 0; border-radius: var(--cm-radius-sm); display: flex; align-items: center; justify-content: center; background: var(--cm-green-muted); color: var(--cm-green); } .cm-upload-template-text { flex: 1 1 auto; } .cm-upload-template-title { font-size: 0.8375rem; font-weight: 600; color: var(--cm-text); } .cm-upload-template-desc { font-size: 0.75rem; color: var(--cm-text-muted); } .cm-upload-segment { display: flex; gap: 0.5rem; margin-bottom: 1rem; } .cm-upload-segment-btn { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.8125rem; font-weight: 600; padding: 0.4rem 1rem; border-radius: 20px; border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); transition: border-color .14s, color .14s, background .14s; } .cm-upload-segment-btn.is-active { background: var(--cm-accent); border-color: var(--cm-accent); color: #fff; } .cm-upload-segment-btn:disabled { opacity: 0.55; cursor: not-allowed; } .cm-upload-dropzone { border: 2px dashed var(--cm-border); border-radius: var(--cm-radius-sm); background: var(--cm-canvas); padding: 2rem 1rem; text-align: center; cursor: pointer; transition: border-color .14s, background .14s; margin-bottom: 1rem; } .cm-upload-dropzone.is-dragover { border-color: var(--cm-accent); background: var(--cm-accent-muted); } .cm-upload-dropzone-icon { display: inline-flex; width: 44px; height: 44px; align-items: center; justify-content: center; border-radius: 50%; background: var(--cm-accent-muted); color: var(--cm-accent); font-size: 1.25rem; margin-bottom: 0.6rem; } .cm-upload-dropzone-text { font-size: 0.8375rem; color: var(--cm-text); } .cm-upload-link { background: none; border: none; padding: 0; color: var(--cm-accent); font-weight: 600; font-size: 0.8375rem; } .cm-upload-dropzone-hint { font-size: 0.72rem; color: var(--cm-text-light); margin-top: 0.3rem; } .cm-upload-file { display: flex; align-items: flex-start; gap: 0.75rem; padding: 0.875rem 1rem; margin-bottom: 1rem; border-radius: var(--cm-radius-sm); background: var(--cm-surface); border: 1px solid var(--cm-border); } .cm-upload-file-icon { width: 34px; height: 34px; flex-shrink: 0; border-radius: var(--cm-radius-sm); display: flex; align-items: center; justify-content: center; background: var(--cm-green-muted); color: var(--cm-green); } .cm-upload-file-info { flex: 1 1 auto; min-width: 0; } .cm-upload-file-name { font-size: 0.8375rem; font-weight: 600; color: var(--cm-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cm-upload-file-size { font-size: 0.72rem; color: var(--cm-text-muted); margin-bottom: 0.4rem; } .cm-upload-file-actions { display: flex; gap: 0.5rem; flex-shrink: 0; } .cm-upload-remove-btn:hover { border-color: var(--cm-red) !important; color: var(--cm-red) !important; background: var(--cm-red-muted) !important; } .cm-upload-progress { height: 6px; border-radius: 4px; background: var(--cm-border-light); overflow: hidden; } .cm-upload-progress-bar { height: 100%; width: 0%; background: var(--cm-accent); border-radius: 4px; transition: width .2s ease; } /* ── State panels ────────────────────────────────────────────── */ .cm-upload-alert { border-radius: var(--cm-radius-sm); border: 1px solid; padding: 1rem; margin-bottom: 1rem; } .cm-upload-alert--error { background: var(--cm-red-muted); border-color: #fecaca; } .cm-upload-alert--warning { background: var(--cm-amber-muted); border-color: #fde68a; } .cm-upload-alert--success { background: var(--cm-green-muted); border-color: #a7f3d0; display: flex; align-items: center; gap: 0.6rem; color: #065f46; font-size: 0.8375rem; font-weight: 500; } .cm-upload-alert--success i { font-size: 1.1rem; } .cm-upload-alert-header { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8375rem; font-weight: 600; color: var(--cm-text); margin-bottom: 0.5rem; } .cm-upload-alert--error .cm-upload-alert-header i { color: var(--cm-red); } .cm-upload-alert--warning .cm-upload-alert-header i { color: var(--cm-amber); } .cm-upload-warning-list { margin: 0 0 0.85rem; padding-left: 1.1rem; font-size: 0.8rem; color: #92400e; } .cm-upload-warning-list li { margin-bottom: 0.2rem; } .cm-upload-review-btn { font-size: 0.8125rem; } .cm-upload-stats { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0.6rem; margin-bottom: 0.85rem; } .cm-upload-stat { background: var(--cm-surface); border: 1px solid var(--cm-border-light); border-radius: var(--cm-radius-sm); padding: 0.6rem 0.7rem; text-align: center; } .cm-upload-stat-label { font-size: 0.65rem; color: var(--cm-text-muted); text-transform: uppercase; letter-spacing: 0.03em; margin-bottom: 0.2rem; } .cm-upload-stat-value { font-size: 1.15rem; font-weight: 700; color: var(--cm-text); margin-bottom: 0.3rem; } .cm-upload-section-label { font-size: 0.75rem; font-weight: 600; color: var(--cm-text); margin-bottom: 0.5rem; } /* ── Warning review table ────────────────────────────────────── */ .cm-upload-review { border-radius: var(--cm-radius-sm); border: 1px solid #fde68a; background: var(--cm-amber-muted); padding: 1rem; margin-bottom: 1rem; } .cm-upload-review-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: 0.75rem; } .cm-upload-review-actions { display: flex; gap: 0.5rem; flex-shrink: 0; } .cm-upload-skipall-btn:hover { border-color: var(--cm-red) !important; color: var(--cm-red) !important; } .cm-upload-review-progress { display: flex; align-items: center; gap: 0.75rem; font-size: 0.75rem; color: #92400e; font-weight: 500; margin-bottom: 0.85rem; } .cm-upload-review-progress .cm-upload-progress { flex: 1 1 auto; background: rgba(255,255,255,.6); } .cm-upload-review .cm-table { background: var(--cm-surface); } .cm-upload-muted { color: var(--cm-text-light); } .cm-upload-subtext { font-size: 0.7rem; color: var(--cm-text-muted); margin-top: 1px; } .cm-upload-kebab-btn { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); } .cm-upload-kebab-btn:hover { border-color: var(--cm-accent); color: var(--cm-accent); } .cm-upload-fix-row input.form-control { font-size: 0.8125rem; } .cm-upload-fix-inputs { display: flex; gap: 0.4rem; } .cm-upload-fix-inputs input.form-control { flex: 1 1 0; min-width: 0; } .cm-upload-fix-error { margin-top: 0.3rem; font-size: 0.75rem; color: var(--cm-red); } .cm-upload-fix-actions { display: flex; gap: 0.35rem; justify-content: flex-end; } .cm-upload-fix-actions button { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); } .cm-upload-fix-confirm:hover { border-color: var(--cm-green); color: var(--cm-green); } .cm-upload-fix-cancel:hover { border-color: var(--cm-red); color: var(--cm-red); } .cm-upload-fix-trigger:hover { border-color: var(--cm-accent); color: var(--cm-accent); } .cm-upload-skip-trigger:hover { border-color: var(--cm-red); color: var(--cm-red); } .cm-upload-tips { margin-top: 0.25rem; } @media (max-width: 640px) { .cm-upload-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .cm-upload-review-header { flex-direction: column; } } /* ============================================================ Commission Allocation Management page (tabs, bulk-action bar, filters, expandable rows, pagination, Overwrite modal) ============================================================ */ /* ── Segment toggle (Protection / Mortgage) ─────────────────── */ .cm-segment-toggle { display: inline-flex; gap: 0.35rem; background: var(--cm-slate-muted); border: 1px solid var(--cm-border); border-radius: 999px; padding: 3px; } .cm-segment-btn { display: inline-flex; align-items: center; gap: 0.35rem; border: none; background: transparent; color: var(--cm-text-muted); font-size: 0.8125rem; font-weight: 600; padding: 0.4rem 0.9rem; border-radius: 999px; white-space: nowrap; } .cm-segment-btn.is-active { background: var(--cm-surface); color: var(--cm-accent); box-shadow: var(--cm-shadow); } .cm-segment-btn:disabled { opacity: 0.5; cursor: not-allowed; } /* ── Tab strip ───────────────────────────────────────────────── */ .cm-tabstrip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; background: var(--cm-surface); border: 1px solid var(--cm-border); border-radius: var(--cm-radius-sm); padding: 0.5rem; margin-bottom: 0.75rem; } .cm-tabstrip-tabs { display: flex; flex-wrap: wrap; gap: 0.3rem; } .cm-tab-btn { display: inline-flex; align-items: center; gap: 0.4rem; border: none; background: transparent; color: var(--cm-text-muted); font-size: 0.8125rem; font-weight: 600; padding: 0.5rem 0.9rem; border-radius: var(--cm-radius-sm); } .cm-tab-btn:hover { background: var(--cm-slate-muted); color: var(--cm-text); } .cm-tab-btn.is-active { background: var(--cm-accent); color: #fff; } .cm-tab-count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: rgba(255,255,255,.25); font-size: 0.7rem; font-weight: 700; } .cm-tab-btn:not(.is-active) .cm-tab-count { background: var(--cm-accent-muted); color: var(--cm-accent); } /* ── Bulk-allocate action bar (Unallocated tab) ─────────────── */ .cm-bulk-bar { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; } .cm-bulk-bar label { font-size: 0.8125rem; font-weight: 600; color: var(--cm-text-muted); white-space: nowrap; } .cm-bulk-bar .form-control, .cm-bulk-bar .form-select { font-size: 0.8125rem; padding: 0.4rem 0.65rem; } /* ── Filter row ──────────────────────────────────────────────── */ .cm-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; } .cm-filter-row .form-control, .cm-filter-row .form-select { font-size: 0.8125rem; padding: 0.45rem 0.75rem; border-color: var(--cm-border); } .cm-filter-search { position: relative; flex: 1 1 220px; max-width: 280px; } .cm-filter-search i { position: absolute; left: 0.7rem; top: 50%; transform: translateY(-50%); color: var(--cm-text-light); font-size: 0.8rem; } .cm-filter-search input { padding-left: 2rem; } .cm-reset-link { color: var(--cm-red); font-size: 0.8125rem; font-weight: 600; background: none; border: none; display: inline-flex; align-items: center; gap: 0.3rem; } /* ── Expandable line rows ───────────────────────────────────── */ .cm-expand-toggle { border: none; background: none; color: var(--cm-accent); display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 6px; } .cm-expand-toggle:hover { background: var(--cm-accent-muted); } .cm-expand-toggle i { transition: transform .15s ease; } .cm-expand-toggle.is-open i { transform: rotate(90deg); } .cm-row-subtext { font-size: 0.7rem; color: var(--cm-text-muted); margin-top: 1px; } .cm-row-link { color: var(--cm-accent); font-weight: 600; text-decoration: none; } .cm-breakdown-row td { background: var(--cm-slate-muted); padding: 0 !important; } .cm-breakdown-panel { padding: 0.9rem 1.1rem 1.1rem; } .cm-breakdown-title { font-size: 0.75rem; font-weight: 700; color: var(--cm-text-muted); text-transform: uppercase; letter-spacing: .03em; margin-bottom: 0.5rem; } /* ── Pagination footer ──────────────────────────────────────── */ .cm-pagination-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem; padding: 0.85rem 1.1rem; font-size: 0.8125rem; color: var(--cm-text-muted); } .cm-pagination-pages { display: flex; align-items: center; gap: 0.25rem; } .cm-page-btn { min-width: 30px; height: 30px; padding: 0 0.4rem; border-radius: 7px; border: 1px solid var(--cm-border); background: var(--cm-surface); color: var(--cm-text-muted); font-size: 0.8125rem; font-weight: 600; } .cm-page-btn:hover:not(:disabled) { border-color: var(--cm-accent); color: var(--cm-accent); } .cm-page-btn.is-active { background: var(--cm-accent); border-color: var(--cm-accent); color: #fff; } .cm-page-btn:disabled { opacity: 0.4; cursor: not-allowed; } /* ── Overwrite modal ─────────────────────────────────────────── */ .cm-overwrite-list { border: 1px solid var(--cm-blue); border-radius: var(--cm-radius-sm); overflow: hidden; } .cm-overwrite-row { display: grid; grid-template-columns: 1fr 1.4fr 0.9fr; gap: 0.75rem; align-items: center; padding: 0.6rem 0.9rem; border-bottom: 1px dashed var(--cm-border); } .cm-overwrite-row:last-child { border-bottom: none; } .cm-overwrite-row-label { font-size: 0.8125rem; font-weight: 600; color: var(--cm-text); } .cm-overwrite-pct-input { position: relative; } .cm-overwrite-pct-input input { padding-right: 1.75rem; } .cm-overwrite-pct-input i { position: absolute; right: 0.65rem; top: 50%; transform: translateY(-50%); color: var(--cm-text-light); font-size: 0.75rem; } .cm-overwrite-total { font-size: 0.75rem; font-weight: 600; margin-top: 0.5rem; text-align: right; } .cm-overwrite-total.is-invalid { color: var(--cm-red); } .cm-overwrite-total.is-valid { color: var(--cm-green); } .cm-empty-state { text-align: center; padding: 2.5rem 1rem; color: var(--cm-text-muted); font-size: 0.8125rem; } .cm-checkbox { width: 16px; height: 16px; cursor: pointer; } @media (max-width: 992px) { .cm-overwrite-row { grid-template-columns: 1fr; gap: 0.35rem; } } /* ── Responsive tweaks ───────────────────────────────────────── */ @media (max-width: 576px) { .cm-kpi-value { font-size: 1.25rem; } .cm-page-head h3, .cm-page-head .cm-title { font-size: 1.25rem; } }
2026-08-10 19:03:07.640 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /robots.txt responded 401 in 0.6269 ms
2026-08-10 18:42:34.707 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-mortgage-unallocated responded 200 in 5.8630 ms
2026-08-10 18:42:34.706 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:492fefb04bfa] HTTP GET /api/v1/business/commissions-mortgage-unallocated 200
Req: [no body] Res: {"success":true,"data":{"content":[],"pagination":{"page":0,"size":10,"totalElements":0,"totalPages":0,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Unallocated mortgage commission entries retrieved successfully.","timestamp":"2026-08-10T18:42:34.706215Z"}
2026-08-10 18:42:30.547 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-mortgage-overview responded 200 in 10.3503 ms
2026-08-10 18:42:30.547 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:b145e0a4589e] HTTP GET /api/v1/business/commissions-mortgage-overview 200
Req: [no body] Res: {"success":true,"data":{"entries":{"totalEntries":3,"totalGrossAmount":2900.00,"unallocatedCount":0,"unallocatedGrossAmount":0,"allocatedCount":0,"allocatedGrossAmount":0,"approvedCount":3,"approvedGrossAmount":2900.00,"unpaidSummaryCount":2,"statementsCount":4,"batchesCount":2},"money":{"approvedShareAmount":2900.00,"paidAmount":2140.00,"unpaidAmount":760.00,"accumulatingAmount":0,"adjustments":100.00,"netPayableAmount":860.00,"unpaidRecipientCount":2},"attention":{"unmatchedEntryCount":0,"unallocatableEntryCount":0,"inactiveRecipientAllocationCount":0}},"message":"Mortgage commissions overview retrieved successfully.","timestamp":"2026-08-10T18:42:30.5468459Z"}
2026-08-10 18:42:29.977 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-mortgage-approved responded 200 in 12.2299 ms
2026-08-10 18:42:29.976 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:5907878b1375] HTTP GET /api/v1/business/commissions-mortgage-approved 200
Req: [no body] Res: {"success":true,"data":{"content":[{"allocationId":5,"recipientUserId":923,"recipientNameSnapshot":"Protection & Mortgage Adviser User5","recipientDesignation":"Protection & Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":60.0000,"amount":1020.00,"procurationShare":600.00,"conveyanceShare":300.00,"brokerageShare":120.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":3,"entryNumber":6,"commissionBatchId":4,"batchReference":"BAT-0004","lenderReferenceNumber":"123456789","clientName":"Steve John","caseId":156,"userFacingCaseId":"CASE-0125","lenderName":"Skipton BS","receivedDate":"01-01-2027","approvedAt":"10-08-2026 18:35"},{"allocationId":6,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":40.0000,"amount":680.00,"procurationShare":400.00,"conveyanceShare":200.00,"brokerageShare":80.00,"paymentStatus":"Unpaid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":3,"entryNumber":6,"commissionBatchId":4,"batchReference":"BAT-0004","lenderReferenceNumber":"123456789","clientName":"Steve John","caseId":156,"userFacingCaseId":"CASE-0125","lenderName":"Skipton BS","receivedDate":"01-01-2027","approvedAt":"10-08-2026 18:35"},{"allocationId":1,"recipientUserId":918,"recipientNameSnapshot":"Mortgage Adviser User3","recipientDesignation":"Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":80.0000,"amount":80.00,"procurationShare":0.00,"conveyanceShare":80.00,"brokerageShare":0.00,"paymentStatus":"Unpaid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":2,"entryNumber":2,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:42"},{"allocationId":2,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":20.0000,"amount":20.00,"procurationShare":0.00,"conveyanceShare":20.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":2,"entryNumber":2,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:42"},{"allocationId":3,"recipientUserId":918,"recipientNameSnapshot":"Mortgage Adviser User3","recipientDesignation":"Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":80.0000,"amount":880.00,"procurationShare":800.00,"conveyanceShare":80.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":1,"entryNumber":1,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:34"},{"allocationId":4,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":20.0000,"amount":220.00,"procurationShare":200.00,"conveyanceShare":20.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":1,"entryNumber":1,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:34"}],"pagination":{"page":0,"size":10,"totalElements":6,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Approved mortgage commission retrieved successfully.","timestamp":"2026-08-10T18:42:29.9765116Z"}
2026-08-10 18:42:29.629 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP POST /api/v1/business/commissions-mortgage-approved/move-to-unallocated responded 200 in 5.6148 ms
2026-08-10 18:42:29.629 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:972dcd62c0d8] HTTP POST /api/v1/business/commissions-mortgage-approved/move-to-unallocated 200
Req: {"lineIds":[3,2,1]} Res: {"success":true,"data":{"revertedCount":0,"skippedLineIds":[],"blockedLineIds":[3,2,1],"skippedEntries":[],"blockedEntries":[{"entryId":3,"reasonCode":"ENTRY_STATEMENTED","reason":"A statement has already been generated for at least one recipient on this entry, so it can no longer be moved or changed."},{"entryId":2,"reasonCode":"ENTRY_STATEMENTED","reason":"A statement has already been generated for at least one recipient on this entry, so it can no longer be moved or changed."},{"entryId":1,"reasonCode":"ENTRY_STATEMENTED","reason":"A statement has already been generated for at least one recipient on this entry, so it can no longer be moved or changed."}],"removedCustomEntryCount":0},"message":"Mortgage commission entries moved to Unallocated successfully.","timestamp":"2026-08-10T18:42:29.6292827Z"}
2026-08-10 18:42:24.021 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-mortgage-approved responded 200 in 76.1535 ms
2026-08-10 18:42:24.020 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f5d79b6b9309] HTTP GET /api/v1/business/commissions-mortgage-approved 200
Req: [no body] Res: {"success":true,"data":{"content":[{"allocationId":5,"recipientUserId":923,"recipientNameSnapshot":"Protection & Mortgage Adviser User5","recipientDesignation":"Protection & Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":60.0000,"amount":1020.00,"procurationShare":600.00,"conveyanceShare":300.00,"brokerageShare":120.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":3,"entryNumber":6,"commissionBatchId":4,"batchReference":"BAT-0004","lenderReferenceNumber":"123456789","clientName":"Steve John","caseId":156,"userFacingCaseId":"CASE-0125","lenderName":"Skipton BS","receivedDate":"01-01-2027","approvedAt":"10-08-2026 18:35"},{"allocationId":6,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":40.0000,"amount":680.00,"procurationShare":400.00,"conveyanceShare":200.00,"brokerageShare":80.00,"paymentStatus":"Unpaid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":3,"entryNumber":6,"commissionBatchId":4,"batchReference":"BAT-0004","lenderReferenceNumber":"123456789","clientName":"Steve John","caseId":156,"userFacingCaseId":"CASE-0125","lenderName":"Skipton BS","receivedDate":"01-01-2027","approvedAt":"10-08-2026 18:35"},{"allocationId":1,"recipientUserId":918,"recipientNameSnapshot":"Mortgage Adviser User3","recipientDesignation":"Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":80.0000,"amount":80.00,"procurationShare":0.00,"conveyanceShare":80.00,"brokerageShare":0.00,"paymentStatus":"Unpaid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":2,"entryNumber":2,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:42"},{"allocationId":2,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":20.0000,"amount":20.00,"procurationShare":0.00,"conveyanceShare":20.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":2,"entryNumber":2,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:42"},{"allocationId":3,"recipientUserId":918,"recipientNameSnapshot":"Mortgage Adviser User3","recipientDesignation":"Mortgage Adviser","isCompanyShare":false,"chainDepth":0,"percentageOfGross":80.0000,"amount":880.00,"procurationShare":800.00,"conveyanceShare":80.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":1,"entryNumber":1,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:34"},{"allocationId":4,"recipientUserId":656,"recipientNameSnapshot":"Anmol Kaur Bhatti","recipientDesignation":"Administrator","isCompanyShare":true,"chainDepth":1,"percentageOfGross":20.0000,"amount":220.00,"procurationShare":200.00,"conveyanceShare":20.00,"brokerageShare":0.00,"paymentStatus":"Paid","isRecipientInactive":false,"entryHasStatementedAllocation":true,"mortgageCommissionEntryId":1,"entryNumber":1,"commissionBatchId":1,"batchReference":"BAT-0001","lenderReferenceNumber":"1212121212","clientName":"AARON FINCH","caseId":331,"userFacingCaseId":"CASE-0264","lenderName":"The Mortgage Works","receivedDate":"02-08-2026","approvedAt":"10-08-2026 14:34"}],"pagination":{"page":0,"size":10,"totalElements":6,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"message":"Approved mortgage commission retrieved successfully.","timestamp":"2026-08-10T18:42:24.0203076Z"}
2026-08-10 18:42:22.400 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] HTTP GET /api/v1/business/commissions-mortgage-approved responded 200 in 16.7616 ms
Errors & Warnings 0