Application Logs staging-log-2026092908.txt 200 entries
All ERR WRN INF DBG
Activity 200
2026-09-29 08:54:58.472 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e7d4d1ed36c15c45225f7f8779fa531d] HTTP GET /api/v1/business/solution-builder/cases/458/quote-documents responded 200 in 24.7813 ms
2026-09-29 08:54:58.472 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ab1e50e6a94e] [T:e7d4d1ed36c15c45225f7f8779fa531d] HTTP GET /api/v1/business/solution-builder/cases/458/quote-documents 200
Req: [no body] Res: {"success":true,"data":{"documents":[{"fileId":"71b6545e-0afd-4f3d-8a52-1501727b0626","displayName":"Legal & General Life + CI (Standard) - Application Pack Contents","originalName":"Application Pack Contents.txt","documentType":"Application","status":"Uploaded","fileSize":484,"uploadedAt":"2026-09-22T09:25:58.26539Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Application-Pack-Contents_03.txt?sv=2026-02-06&se=2026-09-29T09%3A54%3A58Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Application+Pack+Contents.txt\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Application%2520Pack%2520Contents.txt&sig=XESMYatwbsw5ulMcQH9mfau10XDYmE%2FZIn7H2IgY28E%3D"},{"fileId":"33a8e7ff-fdb0-4ff7-8547-4dbb3e71606b","displayName":"Legal & General Life + CI (Standard) - Comparison Report - without commission","originalName":"Comparison Report - without commission.pdf","documentType":"QuoteComparisonReport","status":"Uploaded","fileSize":55168,"uploadedAt":"2026-09-22T09:25:58.24283Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Comparison-Report-without-commission_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A54%3A58Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Comparison+Report+-+without+commission.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Comparison%2520Report%2520-%2520without%2520commission.pdf&sig=7HkhSypyE4EbmEBI3R7VpQkHokSeRQfi3fIMBIz87sM%3D"},{"fileId":"11a13c48-cc0e-406d-8f2b-fd069d6239e9","displayName":"Legal & General Life + CI (Standard) - Comparison Report - with commission","originalName":"Comparison Report - with commission.pdf","documentType":"QuoteComparisonReport","status":"Uploaded","fileSize":55310,"uploadedAt":"2026-09-22T09:25:58.206958Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Comparison-Report-with-commission_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A54%3A58Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Comparison+Report+-+with+commission.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Comparison%2520Report%2520-%2520with%2520commission.pdf&sig=C9PMg0qLxx9FYJTPuakzmz%2FMMkamPMq%2Fz6fo3bk7U1s%3D"},{"fileId":"dfb68e45-ad08-4b9c-a704-d47f36e79551","displayName":"Legal & General Life + CI (Standard) - Illustration","originalName":"Illustration.pdf","documentType":"ProvidersIllustration","status":"Uploaded","fileSize":65531,"uploadedAt":"2026-09-22T09:25:58.157493Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Illustration_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A54%3A58Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Illustration.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Illustration.pdf&sig=8eQpWfyMkV%2Fj3RlixqPJPQHCik6Arl5orV%2B4WqPjYqg%3D"},{"fileId":"acd07404-1d43-4738-8d02-0e004de536b2","displayName":"Legal & General Life + CI (Standard) - Life Insurance with Critical Illness Extra Policy Summary","originalName":"Life Insurance with Critical Illness Extra Policy Summary.pdf","documentType":"QuoteDocument","status":"Uploaded","fileSize":745850,"uploadedAt":"2026-09-22T09:25:58.098137Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Life-Insurance-with-Critical-Illness-Extra-Policy-Summary_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A54%3A58Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Life+Insurance+with+Critical+Illness+Extra+Policy+Summary.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Life%2520Insurance%2520with%2520Critical%2520Illness%2520Extra%2520Policy%2520Summary.pdf&sig=9tNB93v5R%2F7KIVk4ResR15o6oFANdDC179dyyVfOU5A%3D"}],"fetch":{"jobId":124,"state":"Completed","inProgress":false,"requestedAt":"2026-09-22T09:25:52.299534Z","completedAt":"2026-09-22T09:25:58.277094Z","attemptCount":1,"errorCode":null,"errorMessage":null}},"timestamp":"2026-09-29T08:54:58.4724753Z"}
2026-09-29 08:54:56.862 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0f83417034037bb201b572a7e0082426] HTTP GET /api/v1/business/sourcing/cases/458/recommended-products/237 responded 200 in 11.6927 ms
2026-09-29 08:54:56.862 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:6a871920a679] [T:0f83417034037bb201b572a7e0082426] HTTP GET /api/v1/business/sourcing/cases/458/recommended-products/237 200
Req: [no body] Res: {"success":true,"data":[{"id":132,"caseId":458,"quoteId":237,"iPipelineQuoteId":"f3abcd6a-78ab-473f-8b49-d1a5ddbbbd17","benefitId":"965f2318-b0c7-428d-88c2-af513936fffe","benefitKey":"Term|Both|Life","benefitName":"Life Insurance","coverType":"Life","displayName":"Joint","isManualProduct":false,"basicInformation":{"productName":"Legal & General Life + CI (Standard)","provider":"Legal & General","providerId":126,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":524,"name":"Ayra Ali"},{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Joint","policyNumber":"PI5656","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Reviewable","premiumAmount":5000.00,"productType":"Term"},"commissionInformation":{"grossCommission":50.00,"commissionMonths":"12 Months","commissionType":"Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"fgg"},"isComplete":false},{"id":133,"caseId":458,"quoteId":237,"iPipelineQuoteId":"f3abcd6a-78ab-473f-8b49-d1a5ddbbbd17","benefitId":"513de09c-11d7-4d07-92b3-a88d72b48e2a","benefitKey":"Term|Both|LifeOrCriticalIllness","benefitName":"Life Insurance","coverType":"Life or Critical Illness","displayName":"Joint","isManualProduct":false,"basicInformation":{"productName":"Legal & General Life + CI (Standard)","provider":"Legal & General","providerId":126,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":524,"name":"Ayra Ali"},{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Joint","policyNumber":"PY4545","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Guaranteed","premiumAmount":5000.00,"productType":"Term"},"commissionInformation":{"grossCommission":90.00,"commissionMonths":"24 Months","commissionType":"Non-Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"fgfg"},"isComplete":false},{"id":134,"caseId":458,"quoteId":237,"iPipelineQuoteId":"778ca123-c2bf-4fb9-8e3f-49a8c0f2b75d","benefitId":"593f6755-d2a1-48b5-9ce1-aca513514145","benefitKey":"Term|Second|LifeOrCriticalIllness","benefitName":"Life Insurance","coverType":"Life or Critical Illness","displayName":"Kamran","isManualProduct":false,"basicInformation":{"productName":"VitalityLife Optimised Life & SIC 1X","provider":"VitalityLife","providerId":131,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Single","policyNumber":"PG5656","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Reviewable","premiumAmount":41.97,"productType":"Term"},"commissionInformation":{"grossCommission":430.44,"commissionMonths":"12 Months","commissionType":"Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"gfgf"},"isComplete":false}],"timestamp":"2026-09-29T08:54:56.8615922Z"}
2026-09-29 08:54:55.119 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:12829019ab83e37f4f64f90d75a4dd95] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 31.1535 ms
2026-09-29 08:54:55.119 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:20f9ce1d9f25] [T:12829019ab83e37f4f64f90d75a4dd95] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A54%3A55Z&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=vuQ3OXY4d2ui%2ByCT2EU6lH257ddAjlvA6%2Fp3gXiKBR8%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-09-29T08:54:55.119595Z"}
2026-09-29 08:53:39.510 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ba1b5285e2606d13ed3832a92474bbdf] HTTP GET /UI/business/login responded 200 in 1.5296 ms
2026-09-29 08:53:39.510 +00:00 [INF] [HTTP] [U:-] [E:-] [C:abd8da219092] [T:ba1b5285e2606d13ed3832a92474bbdf] 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="CfDJ8K-HlG9kazxLriphAvTp5JaJ1N7VI5rJy8HraiOcjpH828hKnsaQkLPq5NIHWn79Ed5GTayNuu2PfrP8MIz2AdT07ij2XtKCDq0llhLXdMYqPwcxLXQ8y67ckHjulNL0-DsGaMYspeeXXk5JbiG-RyI" /></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-09-29 08:53:12.111 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:756a2d7a579931d36fc9ccca484ec61d] HTTP GET /test-signalr.html responded 200 in 0.7641 ms
2026-09-29 08:53:12.111 +00:00 [INF] [HTTP] [U:-] [E:-] [C:-] [T:756a2d7a579931d36fc9ccca484ec61d] 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-09-29 08:53:04.304 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:365c3b885a90375d52227f3caa72a0d8] HTTP GET /demo/solution-builder/events responded 200 in 3.2644 ms
2026-09-29 08:53:04.304 +00:00 [INF] [HTTP] [U:-] [E:-] [C:26d14698a128] [T:365c3b885a90375d52227f3caa72a0d8] 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-09-29 08:52:48.336 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:543b70b4c94c5da51f835f348ea4dcae] HTTP GET /UI/business/login responded 200 in 2.0220 ms
2026-09-29 08:52:48.336 +00:00 [INF] [HTTP] [U:-] [E:-] [C:8fda017b424e] [T:543b70b4c94c5da51f835f348ea4dcae] 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="CfDJ8K-HlG9kazxLriphAvTp5JY72jwNw6AkRLGgU2LHUePHfKf-m1r-IgisRU27CTsB6QQ4zTaaf_GbvWtICKZrAo5JiMyrraakJoALNc6dW8Z3JqXvPYYF_3bK_EZgNT1U3A7s2uwt3hxm2WxzLHkbzb0" /></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-09-29 08:52:48.237 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:b498ef05e7e36af368fb228b0c03930e] HTTP GET /UI/Dashboard/Index responded 302 in 0.6582 ms
2026-09-29 08:52:48.237 +00:00 [INF] [HTTP] [U:-] [E:-] [C:624db71e9d73] [T:b498ef05e7e36af368fb228b0c03930e] HTTP GET /UI/Dashboard/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:52:16.606 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ad3fd4ef6abdeb8b4b11164e1fd89e55] HTTP GET /UI/business/login responded 200 in 1.6213 ms
2026-09-29 08:52:16.606 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e95dabce4491] [T:ad3fd4ef6abdeb8b4b11164e1fd89e55] 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="CfDJ8K-HlG9kazxLriphAvTp5JbKtdklBhZbPe-XOwSaRkUPoS50lpvHc9iNW9TVzroF73droD-_YxvdxD15DQGNDR0RUpQ_9rX82o2wJLRsOB-ok7PAPHnrwGwGiUtD8Vk9_muuwoDa3NXoUTjTevrvu8M" /></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-09-29 08:52:16.494 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:1f75a1673b0314fca11b23bea4541db4] HTTP GET /UI/Clients/Index responded 302 in 0.5022 ms
2026-09-29 08:52:16.494 +00:00 [INF] [HTTP] [U:-] [E:-] [C:bc835d54e53f] [T:1f75a1673b0314fca11b23bea4541db4] HTTP GET /UI/Clients/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:51:59.471 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e5f34878f971f06d150d63bbe4a03bce] HTTP GET /UI/business/login responded 200 in 1.5050 ms
2026-09-29 08:51:59.471 +00:00 [INF] [HTTP] [U:-] [E:-] [C:99f092a4f4d0] [T:e5f34878f971f06d150d63bbe4a03bce] 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="CfDJ8K-HlG9kazxLriphAvTp5JYO93Q8J3Lmy6JnSF95X3Hv-K-MGr8DCsHqRaJvCNxmjm7szda51VfTieCSAc2tgIO4KsPnLqLBhoQucha3NSMgUI1G8NRKyPlHf-MR3v3DeO82paPT5BqKX9P1My3GJBM" /></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-09-29 08:51:59.370 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:7d7b58707cc2149967bb91815f64a3a5] HTTP GET /UI/Templates/Index responded 302 in 0.7505 ms
2026-09-29 08:51:59.370 +00:00 [INF] [HTTP] [U:-] [E:-] [C:9f48c3c7e590] [T:7d7b58707cc2149967bb91815f64a3a5] HTTP GET /UI/Templates/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:51:55.028 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:dbef11718b53402f2fdca0148ba6ce33] HTTP GET /UI/business/login responded 200 in 1.7433 ms
2026-09-29 08:51:55.027 +00:00 [INF] [HTTP] [U:-] [E:-] [C:edc952e64a4a] [T:dbef11718b53402f2fdca0148ba6ce33] 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="CfDJ8K-HlG9kazxLriphAvTp5Jb2u7XtuZunmSSCc3g92-M8nJNZNOD1BLTmK3Jiub3Gc3KFnhUqudA31mN5R4v8lppR6LytBdyyo4ztiantDDwvEXxPYkJmEmXYmTJahyzXM_y-GO_ZTx2NJuVyCHHWdeA" /></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-09-29 08:51:54.926 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:3eb40aa80f8657eb57b28d7bf33da60b] HTTP GET /UI/FactFindTemplates/Index responded 302 in 1.0861 ms
2026-09-29 08:51:54.926 +00:00 [INF] [HTTP] [U:-] [E:-] [C:1a3788fb9798] [T:3eb40aa80f8657eb57b28d7bf33da60b] HTTP GET /UI/FactFindTemplates/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:51:36.819 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:c10ad2f3a2e52b4bd73af764ea0f041b] HTTP GET /UI/business/login responded 200 in 1.6905 ms
2026-09-29 08:51:36.819 +00:00 [INF] [HTTP] [U:-] [E:-] [C:0a5073586d6a] [T:c10ad2f3a2e52b4bd73af764ea0f041b] 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="CfDJ8K-HlG9kazxLriphAvTp5JZJrZuLzCKKG5KPIhW-G3h8LA4TxyouHDBzh5uIHfcmGlRBROYV6hoXnNkk0psjhjGtYvJF9CrOooOA1NvsMsQ41ll4p2q8Vg8pZCE7GE8a_PDTx5hgIMa99ctNIo4ND68" /></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-09-29 08:51:36.719 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:480321f27068169e21cb2c7e79408735] HTTP GET /UI/Cases/Index responded 302 in 0.5556 ms
2026-09-29 08:51:36.719 +00:00 [INF] [HTTP] [U:-] [E:-] [C:cc7c1fe75de7] [T:480321f27068169e21cb2c7e79408735] HTTP GET /UI/Cases/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:51:33.066 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:67311dd73bcb206d8a2eb12f2871f13f] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 29.7257 ms
2026-09-29 08:51:33.066 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:a6e2a6ffbe89] [T:67311dd73bcb206d8a2eb12f2871f13f] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A51%3A33Z&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=4MmJ1ERbEFFfUn48BcuaMJUjC%2BGW9GG87aKHGLVaWYw%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-09-29T08:51:33.0664096Z"}
2026-09-29 08:51:10.221 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:5db507efbef209fb5c8abb9ad1c9bb25] HTTP GET /demo/solution-builder responded 200 in 3.0649 ms
2026-09-29 08:51:10.221 +00:00 [INF] [HTTP] [U:-] [E:-] [C:aa6aad6f8672] [T:5db507efbef209fb5c8abb9ad1c9bb25] 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-09-29 08:51:10.089 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:70714e922bfc051209cbc298e1b82e89] HTTP GET /UI/business/login responded 200 in 1.9362 ms
2026-09-29 08:51:10.089 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e300d4301c85] [T:70714e922bfc051209cbc298e1b82e89] 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="CfDJ8K-HlG9kazxLriphAvTp5JZFjPGqzPLq3G9CLUNHEp_-3yjjGENi4geaTs7FQ-GOr-K7uP2yLh2uZI87z7BP8rq1twRVNl3XnDkLey2BDXTiewVt_bZ-x1wfCe6pwSiH3O4JlbMk73qa2IqNkVNYrwo" /></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-09-29 08:51:09.985 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:7d3396093f6eb14fc6c26e3b7784d567] HTTP GET /UI/Tokens/Index responded 302 in 0.5580 ms
2026-09-29 08:51:09.985 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e3de696859a7] [T:7d3396093f6eb14fc6c26e3b7784d567] HTTP GET /UI/Tokens/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:51:09.505 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:573aa03b7b45eed5971b0442079f54f8] HTTP GET /hubs/notifications responded 101 in 711785.1863 ms
2026-09-29 08:51:01.595 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:cafdc059f754897940c26d25ed8e6ea2] HTTP GET /api/v1/business/cases/367 responded 200 in 59.2490 ms
2026-09-29 08:51:01.594 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:9663a050903b] [T:cafdc059f754897940c26d25ed8e6ea2] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:51:01.5933862Z"}
2026-09-29 08:51:01.562 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:dec8a03f050e19881e9648bca2ec97ad] HTTP GET /api/v1/business/sourcing/cases/367/business-protection-needs responded 200 in 26.5508 ms
2026-09-29 08:51:01.562 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ba8e5c05f9c9] [T:dec8a03f050e19881e9648bca2ec97ad] HTTP GET /api/v1/business/sourcing/cases/367/business-protection-needs 200
Req: [no body] Res: {"success":true,"data":{"id":24,"caseId":367,"livesAssured":"Client1","benefitType":"Level Term Assurance","relevantLifeOnly":false,"premiumType":"Guaranteed","coverScenarios":[{"id":89,"scenarioType":"LifeOrEarlierCiCover","termYears":null,"toAgeYears":65,"coverAmount":50000.00}],"totalPermanentDisability":null,"waiverOfPremium":"Client1","indexation":"Level","policyInterestRate":null},"timestamp":"2026-09-29T08:51:01.5399138Z","preCheck":{"area":"Sourcing","pageKey":"BusinessProtectionNeeds","pageTitle":"Needs & Preferences","caseClientId":null,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:51:01.550 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:d55fdc9a2811e288cb5ddd441dd6eca9] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 12.0544 ms
2026-09-29 08:51:01.550 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:94a9ba8e0b1a] [T:d55fdc9a2811e288cb5ddd441dd6eca9] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:51:01.5506973Z"}
2026-09-29 08:51:01.544 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:764e386d7f54f8bfa2e3c818dc995a59] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details responded 200 in 8.5513 ms
2026-09-29 08:51:01.544 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:503ca6e9c400] [T:764e386d7f54f8bfa2e3c818dc995a59] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":288,"factFindId":415,"title":"Miss","firstName":"Ayra","lastName":"Ali","email":"ayra22@gmail.com","mobilePhone":"+44 5566778899","middleName":null,"dateOfBirth":"1992-07-22","countryOfBirth":null,"nationality":"British","maritalStatus":"Single","gender":"Female","genderOther":null,"anticipatedRetirementAge":65,"anticipatedEmploymentChange":null,"isSmoker":true,"lastSmokedYears":0,"lastSmokedMonths":4,"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-29T10:15:03.694584Z","updatedAt":null},"timestamp":"2026-09-29T08:51:01.5426414Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:51:00.271 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e15c8130f2004979fc29e2fe2e7d8f9d] HTTP GET /api/v1/business/cases/367 responded 200 in 30.5873 ms
2026-09-29 08:51:00.270 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:058c544c9879] [T:e15c8130f2004979fc29e2fe2e7d8f9d] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:51:00.2704752Z"}
2026-09-29 08:51:00.263 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:3413f4c2db99eb0aa2a5fd7f675ffaec] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 14.2933 ms
2026-09-29 08:51:00.263 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:c917acb94b01] [T:3413f4c2db99eb0aa2a5fd7f675ffaec] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:51:00.2633932Z"}
2026-09-29 08:50:55.157 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:f02808b9212b18eac201d94aa54458ba] HTTP GET /api/v1/business/cases/introducer-candidates responded 200 in 3.8124 ms
2026-09-29 08:50:55.157 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:0d0152e43a42] [T:f02808b9212b18eac201d94aa54458ba] HTTP GET /api/v1/business/cases/introducer-candidates 200
Req: [no body] Res: {"success":true,"data":[{"id":658,"fullName":"Gagan Deep Pi"},{"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-09-29T08:50:55.1572692Z"}
2026-09-29 08:50:55.157 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:6b16a90ffb500b6d272ffcf418708e25] HTTP GET /api/v1/business/case-statuses responded 200 in 3.6803 ms
2026-09-29 08:50:55.157 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:5ba508d73993] [T:6b16a90ffb500b6d272ffcf418708e25] 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-09-29T08:50:55.1571122Z"}
2026-09-29 08:50:55.018 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:8dac34b9c19e84426d62b64eab7b3ad0] HTTP GET /api/v1/business/cases/my responded 200 in 24.5458 ms
2026-09-29 08:50:55.017 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:2237b2cc3c25] [T:8dac34b9c19e84426d62b64eab7b3ad0] HTTP GET /api/v1/business/cases/my 200
Req: [no body] Res: {"success":true,"data":{"cases":{"content":[{"id":456,"userFacingCaseId":"CASE-0381","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":198,"clientName":"Anmol Grgr Abc","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":["Aviva"],"recommendedProductNames":["wert"],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T11:02:23.711093Z"},{"id":455,"userFacingCaseId":"CASE-0380","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T10:58:14.842612Z"},{"id":451,"userFacingCaseId":"CASE-0376","productType":"Business Protection","productNames":["Business Loan Insurance","Business Health Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":73,"clientName":"James Faulkner","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T08:58:02.597611Z"},{"id":434,"userFacingCaseId":"CASE-0359","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null},{"caseClientId":0,"clientId":216,"clientName":"Testing Case Two","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-14T14:08:37.029741Z"},{"id":377,"userFacingCaseId":"CASE-0304","productType":"Business Protection","productNames":["Keyman Protection","Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T13:08:19.409345Z"},{"id":376,"userFacingCaseId":"CASE-0303","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null},{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T13:03:08.07534Z"},{"id":375,"userFacingCaseId":"CASE-0302","productType":"Business Protection","productNames":["Keyman Protection","Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null},{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T10:44:15.643549Z"},{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":["VitalityLife"],"recommendedProductNames":["VitalityLife Optimised Life & Business SIC 2X"],"isLocked":false,"canReassign":true,"createdAt":"2026-08-25T12:24:56.515071Z"},{"id":366,"userFacingCaseId":"CASE-0294","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":218,"clientName":"Gagan Gagan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-24T09:06:35.294268Z"},{"id":365,"userFacingCaseId":"CASE-0293","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":51,"clientName":"Jos Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-24T09:03:24.59935Z"},{"id":364,"userFacingCaseId":"CASE-0292","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-21T09:40:42.223604Z"},{"id":362,"userFacingCaseId":"CASE-0291","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-20T08:15:53.278112Z"},{"id":361,"userFacingCaseId":"CASE-0290","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-19T11:56:41.916289Z"},{"id":358,"userFacingCaseId":"CASE-0287","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-18T09:10:14.316615Z"},{"id":308,"userFacingCaseId":"CASE-0241","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":180,"clientName":"Gagan Deep Khajuria","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-06T07:41:50.491252Z"},{"id":302,"userFacingCaseId":"CASE-0235","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":53,"clientName":"Living Stone","factFindId":null},{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-05T10:33:45.779695Z"},{"id":267,"userFacingCaseId":"CASE-0201","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":137,"clientName":"Aqfdqaf Afasf","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T08:31:34.28071Z"},{"id":265,"userFacingCaseId":"CASE-0199","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":73,"clientName":"James Faulkner","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T07:41:33.179065Z"},{"id":264,"userFacingCaseId":"CASE-0198","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":172,"clientName":"Kamran Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T07:38:18.037744Z"},{"id":261,"userFacingCaseId":"CASE-0196","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":184,"clientName":"AzaZ Azaz","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-29T11:49:50.152146Z"},{"id":231,"userFacingCaseId":"CASE-0174","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":59,"clientName":"Gagan Gagan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-27T09:39:10.740963Z"},{"id":185,"userFacingCaseId":"CASE-0151","productType":"Business Protection","productNames":["Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":51,"clientName":"Jos Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-20T09:06:34.245537Z"},{"id":172,"userFacingCaseId":"CASE-0140","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":608,"caseStatusName":"Pending","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":137,"clientName":"Aqfdqaf Afasf","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T13:24:13.835872Z"},{"id":169,"userFacingCaseId":"CASE-0137","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":611,"caseStatusName":"Cancelled","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":103,"clientName":"Michael Ernest","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T12:06:34.489084Z"},{"id":168,"userFacingCaseId":"CASE-0136","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":54,"clientName":"Josh Robert Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T12:01:25.46509Z"},{"id":129,"userFacingCaseId":"CASE-0106","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"Initiated","clients":[{"caseClientId":0,"clientId":26,"clientName":"Jos Butler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-09T12:53:01.795636Z"},{"id":99,"userFacingCaseId":"CASE-0076","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":86,"clientName":"Denisa Zama","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-06T13:36:31.60657Z"},{"id":86,"userFacingCaseId":"CASE-0064","productType":"Business Protection","productNames":["Relevant Life Cover","Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":78,"clientName":"Kawalpreet Kaur","factFindId":null},{"caseClientId":0,"clientId":79,"clientName":"Shubam Goel","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-03T13:21:11.87179Z"},{"id":50,"userFacingCaseId":"CASE-0035","productType":"Business Protection","productNames":["Relevant Life Cover","Business Loan Insurance","Keyman Protection","Shareholder Protection"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":46,"clientName":"Hedric Test","factFindId":null},{"caseClientId":0,"clientId":32,"clientName":"Venessa Kolh","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-25T10:54:58.627376Z"},{"id":49,"userFacingCaseId":"CASE-0034","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":45,"clientName":"Fillip Raw","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-25T08:38:31.47846Z"},{"id":43,"userFacingCaseId":"CASE-0029","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":37,"clientName":"Dawood Ibrahimm","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T12:15:00.82981Z"},{"id":35,"userFacingCaseId":"CASE-0021","productType":"Business Protection","productNames":["Business Health Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":35,"clientName":"Harnain Koul","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T10:47:28.836589Z"},{"id":32,"userFacingCaseId":"CASE-0018","productType":"Business Protection","productNames":["Shareholder Protection"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":21,"clientName":"Gagandeep Singh","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T10:09:27.699557Z"},{"id":30,"userFacingCaseId":"CASE-0016","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":31,"clientName":"Vijay Subrimanyum","factFindId":null},{"caseClientId":0,"clientId":43,"clientName":"Dudu Fasdfasd","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T09:33:00.013987Z"},{"id":28,"userFacingCaseId":"CASE-0014","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":30,"clientName":"Travis Scott","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T08:57:26.965488Z"},{"id":26,"userFacingCaseId":"CASE-0012","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":29,"clientName":"Palak Mahajan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T08:15:10.396302Z"},{"id":18,"userFacingCaseId":"CASE-0008","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":20,"clientName":"Agham Khajuria","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T07:28:13.166757Z"}],"pagination":{"page":0,"size":50,"totalElements":37,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-09-29T08:50:55.0164862Z"}
2026-09-29 08:50:54.977 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:dd4d82478d41003b65f35f4f61f56d0b] HTTP GET /api/v1/business/cases/products responded 200 in 3.3370 ms
2026-09-29 08:50:54.977 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:acf1ae2d6cee] [T:dd4d82478d41003b65f35f4f61f56d0b] HTTP GET /api/v1/business/cases/products 200
Req: [no body] Res: {"success":true,"data":[{"id":8,"name":"Relevant Life Cover"},{"id":9,"name":"Business Loan Insurance"},{"id":10,"name":"Keyman Protection"},{"id":11,"name":"Shareholder Protection"},{"id":12,"name":"Business Health Cover"},{"id":13,"name":"Business Life & Critical Illness"}],"timestamp":"2026-09-29T08:50:54.9775264Z"}
2026-09-29 08:50:53.701 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9872e7c11a2b2b5daf586bcc7eb50284] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 5.4031 ms
2026-09-29 08:50:53.701 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:b327bc1af682] [T:9872e7c11a2b2b5daf586bcc7eb50284] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A50%3A53Z&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=5cx7if9NzMtkGHGPDdtdtQUbr5TgQja%2Bi4fRjgd0%2Feo%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-09-29T08:50:53.7014503Z"}
2026-09-29 08:50:42.602 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:18c9881cc678d15325407d521660a6af] HTTP GET /UI/business/login responded 200 in 1.4480 ms
2026-09-29 08:50:42.602 +00:00 [INF] [HTTP] [U:-] [E:-] [C:4c40d12dea12] [T:18c9881cc678d15325407d521660a6af] 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="CfDJ8K-HlG9kazxLriphAvTp5JZLcXxeVmKp3oDiZVhzmWqz40MQXbq1OYWrb94hHu7Mwp1wCG4b519r-kyrWuujNg2ARcECQDxrUfKnOwlOJ5cg6UA4e3kKUFwh9KKcCamjgu_VxuOtgOoDSR1NWTbfZks" /></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-09-29 08:50:42.499 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:bec32a7d2f1c3a401b2b3e4670b2cd4f] HTTP GET /UI/Reporting/Index responded 302 in 0.6521 ms
2026-09-29 08:50:42.498 +00:00 [INF] [HTTP] [U:-] [E:-] [C:97f533d94539] [T:bec32a7d2f1c3a401b2b3e4670b2cd4f] HTTP GET /UI/Reporting/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:50:42.395 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:db96af34058359042276041180b20f8d] HTTP GET /UI/business/login responded 200 in 1.7420 ms
2026-09-29 08:50:42.395 +00:00 [INF] [HTTP] [U:-] [E:-] [C:ef72c93127e3] [T:db96af34058359042276041180b20f8d] 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="CfDJ8K-HlG9kazxLriphAvTp5Jav-xFJ7AB0UotQSzE_rvf80vj9W4K2RvqyUkDEkFLEhC9YpkC-8V-x3gNlRz6W72vL7PSHg8b0p8L_usC_Dvp4IIOi4wtrgmj5ebPNGmbWmjR6tKZvbhBS9Vp4b0CZ1Iw" /></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-09-29 08:50:42.287 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ef370be6b0b989e04761321fcacf0779] HTTP GET /UI/FactFindFormatters/Index responded 302 in 0.6109 ms
2026-09-29 08:50:42.287 +00:00 [INF] [HTTP] [U:-] [E:-] [C:a7730d5398d2] [T:ef370be6b0b989e04761321fcacf0779] HTTP GET /UI/FactFindFormatters/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:50:33.066 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:b9cc25ee848a3c5269dd1320d53c2c10] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 23.2807 ms
2026-09-29 08:50:33.066 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:493646e6e260] [T:b9cc25ee848a3c5269dd1320d53c2c10] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A50%3A33Z&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=ltRX4sy84qdTOcAP1bhIOrPWtF8pNZYZoT6bmfOjKxg%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-09-29T08:50:33.0661231Z"}
2026-09-29 08:50:20.890 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:7fc25f1b32e9aab59f654b3ed24812d6] HTTP GET /UI/business/login responded 200 in 1.4822 ms
2026-09-29 08:50:20.890 +00:00 [INF] [HTTP] [U:-] [E:-] [C:597927611374] [T:7fc25f1b32e9aab59f654b3ed24812d6] 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="CfDJ8K-HlG9kazxLriphAvTp5Ja-D5xY0PB7dweqwVe9bCrc26iGpiiheUgDdIxv2iJM5VstsF-xcj3tRAJl7GDrd_wu8IN0DuPvL1OaKIU0lPBE17i1s_yrZERuj5bLet1-iooB2jphYoamsbouAnf1JvQ" /></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-09-29 08:50:20.787 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e9893f642ecceffddbe73d43ab676562] HTTP GET /UI/Users/Index responded 302 in 0.9845 ms
2026-09-29 08:50:20.787 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e7d72288c35f] [T:e9893f642ecceffddbe73d43ab676562] HTTP GET /UI/Users/Index 302
Req: [no body] Res: [empty response]
2026-09-29 08:50:20.679 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:95d9419617c090eec078f258a7973aa2] HTTP GET /UI/business/login responded 200 in 1.5686 ms
2026-09-29 08:50:20.679 +00:00 [INF] [HTTP] [U:-] [E:-] [C:e9ba488c2a62] [T:95d9419617c090eec078f258a7973aa2] 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="CfDJ8K-HlG9kazxLriphAvTp5JZLCRzFmeg1y5XsmmBpCqRcL7xQOi4r8P-8w6IEN9QBQXDAIbVPud2CUvrkvmK6Ce4TDsGUg9PFDUvDyx3bGbSiuK93SgmOceBLHfIByl9m3SGslTROYx07qbVoB1Ij8V8" /></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-09-29 08:50:20.578 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:84d6d3d0380f2a90199343d9cedbc6f9] HTTP GET /UI/Commissions/Management responded 302 in 0.6960 ms
2026-09-29 08:50:20.577 +00:00 [INF] [HTTP] [U:-] [E:-] [C:a9e5d1ce6af0] [T:84d6d3d0380f2a90199343d9cedbc6f9] HTTP GET /UI/Commissions/Management 302
Req: [no body] Res: [empty response]
2026-09-29 08:50:05.849 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:db077cc855a0d6d03937f9572f555236] HTTP GET /swagger/index.html responded 200 in 0.3969 ms
2026-09-29 08:50:05.743 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:65bd23610aa2810404a62a5028e31ab6] HTTP GET /swagger responded 301 in 0.0482 ms
2026-09-29 08:49:58.128 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:5c5bed8fae165d506258c93228a9d873] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.3757 ms
2026-09-29 08:49:58.128 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:4752cce921a4] [T:5c5bed8fae165d506258c93228a9d873] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A49%3A58Z&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=UDhr0e0Zzu9HK%2BJirWbxawa045WyJa9x0EkB0w71P%2B4%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-09-29T08:49:58.1283237Z"}
2026-09-29 08:49:48.253 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9fcc8a50c631dd871374872ca831e644] HTTP GET /UI/business/login responded 200 in 9.3712 ms
2026-09-29 08:49:48.252 +00:00 [INF] [HTTP] [U:-] [E:-] [C:5fedbccc780b] [T:9fcc8a50c631dd871374872ca831e644] 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="CfDJ8K-HlG9kazxLriphAvTp5JYfmIsig9EIloaSTvCUGYM2fELnTMyme2EXx7RDodMfjtG2d2atLVydQ55Jhzpoe7ZFxFMthSVpQ9a9J_n3JaDLg5RSj4RJVF1RxLiIAyKmT86o-jxtl43Mysuok6K845Q" /></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-09-29 08:49:48.137 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:d3234e48bc4827a3db6aae47107b910c] HTTP GET /UI/FactFindGenerate responded 302 in 0.5742 ms
2026-09-29 08:49:48.137 +00:00 [INF] [HTTP] [U:-] [E:-] [C:ba69e95fb53a] [T:d3234e48bc4827a3db6aae47107b910c] HTTP GET /UI/FactFindGenerate 302
Req: [no body] Res: [empty response]
2026-09-29 08:49:48.031 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e2203e8e5c164146ecbf86a3958dee64] HTTP GET /UI responded 200 in 6.9634 ms
2026-09-29 08:49:48.030 +00:00 [INF] [HTTP] [U:-] [E:-] [C:962c8c57bd0b] [T:e2203e8e5c164146ecbf86a3958dee64] 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-09-29 08:49:33.045 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e76ed3fc3d69b9cc6833bc438e3d2fa2] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.0517 ms
2026-09-29 08:49:33.044 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:fd7b8295e3de] [T:e76ed3fc3d69b9cc6833bc438e3d2fa2] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A49%3A33Z&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=%2FulhsctIStEv09mLWQlkyhG7Vs%2BIFkXftsczI8LjA1M%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-09-29T08:49:33.0448024Z"}
2026-09-29 08:49:31.651 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:86235749fef59f38dfc46d8432b4d8c4] HTTP GET /api/v1/business/fact-finds/cases/464/financial-overview responded 200 in 8.4491 ms
2026-09-29 08:49:31.651 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f81a26d10312] [T:86235749fef59f38dfc46d8432b4d8c4] HTTP GET /api/v1/business/fact-finds/cases/464/financial-overview 200
Req: [no body] Res: {"success":true,"data":{"caseId":464,"hasJointRow":false,"rows":[{"caseClientId":535,"name":"Leonardo Vinci","isJoint":false,"netIncomeMonthly":234900.00,"expenditureMonthly":22877.00,"disposableIncomeMonthly":212023.00,"maxMortgageBudgetMonthly":5000.00,"maxProtectionBudgetMonthly":6000.00}],"totals":{"netIncomeMonthly":234900.00,"expenditureMonthly":22877.00,"disposableIncomeMonthly":212023.00,"maxMortgageBudgetMonthly":5000.00,"maxProtectionBudgetMonthly":6000.00}},"timestamp":"2026-09-29T08:49:31.6503868Z","preCheck":{"area":"Fact Find","pageKey":"FinancialOverview","pageTitle":"Financial Overview","caseClientId":null,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:49:31.639 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:54d2e83ade58c415d5c41546238af198] HTTP GET /api/v1/business/cases/464/notes/summary responded 200 in 13.7725 ms
2026-09-29 08:49:31.639 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:19254e1ba49a] [T:54d2e83ade58c415d5c41546238af198] HTTP GET /api/v1/business/cases/464/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:49:31.6388334Z"}
2026-09-29 08:49:31.153 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ad532bdfbbb87e468a3c47a41cedd583] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details/addresses responded 200 in 4.7816 ms
2026-09-29 08:49:31.153 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:2e9d0721de3c] [T:ad532bdfbbb87e468a3c47a41cedd583] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details/addresses 200
Req: [no body] Res: {"success":true,"data":[{"id":241,"isCurrent":true,"residentialStatus":"Living With Friends","moveInDate":"1982-01-13","moveOutDate":null,"city":null,"flatNameOrNumber":null,"buildingName":null,"streetAddress":null,"county":null,"postCode":"SW1A 1AA","country":"United Kingdom","residentialAddress":"ADress","town":null,"constituentCountry":null}],"timestamp":"2026-09-29T08:49:31.1530942Z"}
2026-09-29 08:49:30.705 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:87bffdca857499e5dc0f029af2d2db2b] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details responded 200 in 7.5756 ms
2026-09-29 08:49:30.705 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:00b30a0f92e2] [T:87bffdca857499e5dc0f029af2d2db2b] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":395,"factFindId":535,"title":"Mr","firstName":"Leonardo","lastName":"Vinci","email":"vinci@gmail.com","mobilePhone":"+1 4832984238","middleName":"Da","dateOfBirth":"1975-08-13","countryOfBirth":"United States","nationality":"Cameroonian","maritalStatus":"Separated","gender":"Male","genderOther":null,"anticipatedRetirementAge":90,"anticipatedEmploymentChange":null,"isSmoker":false,"lastSmokedYears":null,"lastSmokedMonths":null,"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-09-23T12:15:18.326144Z","updatedAt":null},"timestamp":"2026-09-29T08:49:30.7040799Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":535,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:49:30.689 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ba69d0c728f506351987956f36caa038] HTTP GET /api/v1/business/cases/464/notes/summary responded 200 in 9.8530 ms
2026-09-29 08:49:30.689 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e2ba4d1e4643] [T:ba69d0c728f506351987956f36caa038] HTTP GET /api/v1/business/cases/464/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:49:30.6891296Z"}
2026-09-29 08:49:30.684 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9bad780c6b939582de92d5f0063c10b5] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details/dependants responded 200 in 4.8563 ms
2026-09-29 08:49:30.684 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:efb63aa968ec] [T:9bad780c6b939582de92d5f0063c10b5] HTTP GET /api/v1/business/fact-finds/clients/535/personal-details/dependants 200
Req: [no body] Res: {"success":true,"data":[{"id":153,"name":"Vinci","dateOfBirth":"2000-12-31","relationshipType":"Other","dependencyTermYears":null,"isForWholeOfLife":true}],"timestamp":"2026-09-29T08:49:30.6837252Z"}
2026-09-29 08:49:30.570 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0ee791dedaeb9905c67264cb359c298d] HTTP GET /api/v1/business/cases/464/fact-find/start-date responded 200 in 40.2854 ms
2026-09-29 08:49:30.570 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:dda56e271283] [T:0ee791dedaeb9905c67264cb359c298d] HTTP GET /api/v1/business/cases/464/fact-find/start-date 200
Req: [no body] Res: {"success":true,"data":{"startedAt":"2026-09-23T12:15:36.257Z"},"timestamp":"2026-09-29T08:49:30.5699516Z"}
2026-09-29 08:49:30.568 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:474893d0aaefd88bfa0df97d77d58938] HTTP GET /api/v1/business/cases/464 responded 200 in 39.6360 ms
2026-09-29 08:49:30.568 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1aa86569cb00] [T:474893d0aaefd88bfa0df97d77d58938] HTTP GET /api/v1/business/cases/464 200
Req: [no body] Res: {"success":true,"data":{"id":464,"userFacingCaseId":"CASE-0389","productType":"Personal Protection","productTypeDisplayName":"Personal Protection","productNames":["Critical Illness","Life Insurance","Income Protection","Family Income Benefit"],"caseStatusId":610,"caseStatusName":"Underwriting","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":535,"clientId":260,"clientName":"Leonardo Da Vinci","factFindId":535}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-09-23T12:15:20.724646Z","updatedBy":"656","updatedAt":"2026-09-28T14:32:46.977315Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-09-23T12:16:30.362032Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-09-25T11:51:07.284069Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-09-28T14:32:46.86123Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-09-23T12:16:58.557982Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-09-23T12:17:00.789759Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":6,"sectionType":"Life Style","status":"Complete","completedAt":"2026-09-23T12:17:10.197157Z","preCheckArea":"Fact Find","preCheckPageKey":"LifeStyle","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":7,"sectionType":"Health","status":"Complete","completedAt":"2026-09-23T12:17:22.646627Z","preCheckArea":"Fact Find","preCheckPageKey":"Health","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-09-23T12:17:26.596235Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-09-23T12:17:34.900289Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Personal Protection","productNames":[{"name":"Critical Illness","status":"Complete","completedAt":"2026-09-25T12:21:39.090882Z","preCheckArea":"Product Requirement","preCheckPageKey":null,"outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"name":"Life Insurance","status":"Complete","completedAt":"2026-09-25T12:21:39.090882Z","preCheckArea":"Product Requirement","preCheckPageKey":null,"outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"name":"Income Protection","status":"Complete","completedAt":"2026-09-25T12:21:39.090882Z","preCheckArea":"Product Requirement","preCheckPageKey":null,"outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"name":"Family Income Benefit","status":"Complete","completedAt":"2026-09-25T12:21:39.090882Z","preCheckArea":"Product Requirement","preCheckPageKey":null,"outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Personal Protection","sourcingSection":[{"order":1,"sectionType":"Existing & Replacement Policies","status":"Complete","completedAt":"2026-09-23T12:17:38.390034Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"ExistingReplacementPolicies","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Needs & Preferences","status":"Complete","completedAt":null,"isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"NeedsAndPreferences","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Products","status":"Complete","completedAt":"2026-09-25T12:01:52.352677Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"PersonalProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":4,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-09-25T12:21:39.090882Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"PersonalProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":260,"fullName":"Leonardo Vinci"}]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:49:30.5683632Z"}
2026-09-29 08:48:58.141 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:5e984e476a6eac89dd62e6acaae0337b] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 4.7622 ms
2026-09-29 08:48:58.141 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:cec688291fbc] [T:5e984e476a6eac89dd62e6acaae0337b] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A48%3A58Z&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=UrbWZXFWEjBaY71MmZigwQFbfbir6DrJDQipeZ2BWdg%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-09-29T08:48:58.1409478Z"}
2026-09-29 08:48:33.065 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:b65ff3b6bdb9ce9379c99a1b265f815b] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 20.0176 ms
2026-09-29 08:48:33.064 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f81331a1d4e7] [T:b65ff3b6bdb9ce9379c99a1b265f815b] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A48%3A33Z&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=sHJw%2FHDZuYj2Z6YCDVanRMLXq9%2ByV%2FaOe%2FDBB9GQou0%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-09-29T08:48:33.0647776Z"}
2026-09-29 08:47:59.597 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:f6365a0c5afd9fa8fe4dea45b106e5d6] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 23.9568 ms
2026-09-29 08:47:59.597 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:af537702607f] [T:f6365a0c5afd9fa8fe4dea45b106e5d6] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A47%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=yVmUvbx5QGAjda2DQwolWjxNbVdQJrHy%2F8wPMB6KyoI%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-09-29T08:47:59.5968858Z"}
2026-09-29 08:47:37.557 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:969856bbaf0b330ac68fdabfd0b2cf30] HTTP GET /api/v1/business/solution-builder/cases/458/quote-documents responded 200 in 150.5133 ms
2026-09-29 08:47:37.557 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:126f3c072d8f] [T:969856bbaf0b330ac68fdabfd0b2cf30] HTTP GET /api/v1/business/solution-builder/cases/458/quote-documents 200
Req: [no body] Res: {"success":true,"data":{"documents":[{"fileId":"71b6545e-0afd-4f3d-8a52-1501727b0626","displayName":"Legal & General Life + CI (Standard) - Application Pack Contents","originalName":"Application Pack Contents.txt","documentType":"Application","status":"Uploaded","fileSize":484,"uploadedAt":"2026-09-22T09:25:58.26539Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Application-Pack-Contents_03.txt?sv=2026-02-06&se=2026-09-29T09%3A47%3A37Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Application+Pack+Contents.txt\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Application%2520Pack%2520Contents.txt&sig=SO0VAoN6gd2VYcL1B1pT%2B2cjNaODs0vBzD3KMj2lKuo%3D"},{"fileId":"33a8e7ff-fdb0-4ff7-8547-4dbb3e71606b","displayName":"Legal & General Life + CI (Standard) - Comparison Report - without commission","originalName":"Comparison Report - without commission.pdf","documentType":"QuoteComparisonReport","status":"Uploaded","fileSize":55168,"uploadedAt":"2026-09-22T09:25:58.24283Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Comparison-Report-without-commission_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A47%3A37Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Comparison+Report+-+without+commission.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Comparison%2520Report%2520-%2520without%2520commission.pdf&sig=A9iGABQTM2jJ%2BBpsROzLpll78HvtrgClZhgMDkikfHw%3D"},{"fileId":"11a13c48-cc0e-406d-8f2b-fd069d6239e9","displayName":"Legal & General Life + CI (Standard) - Comparison Report - with commission","originalName":"Comparison Report - with commission.pdf","documentType":"QuoteComparisonReport","status":"Uploaded","fileSize":55310,"uploadedAt":"2026-09-22T09:25:58.206958Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Comparison-Report-with-commission_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A47%3A37Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Comparison+Report+-+with+commission.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Comparison%2520Report%2520-%2520with%2520commission.pdf&sig=xIOP7nSFZaCJcBX9gFR%2BfPlawrlHOYkzukmhhj%2BD7ik%3D"},{"fileId":"dfb68e45-ad08-4b9c-a704-d47f36e79551","displayName":"Legal & General Life + CI (Standard) - Illustration","originalName":"Illustration.pdf","documentType":"ProvidersIllustration","status":"Uploaded","fileSize":65531,"uploadedAt":"2026-09-22T09:25:58.157493Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Illustration_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A47%3A37Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Illustration.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Illustration.pdf&sig=W5SrLMUYP%2Bd1AP6BjUvSygoMuDal2LYx7h3jTipZdBU%3D"},{"fileId":"acd07404-1d43-4738-8d02-0e004de536b2","displayName":"Legal & General Life + CI (Standard) - Life Insurance with Critical Illness Extra Policy Summary","originalName":"Life Insurance with Critical Illness Extra Policy Summary.pdf","documentType":"QuoteDocument","status":"Uploaded","fileSize":745850,"uploadedAt":"2026-09-22T09:25:58.098137Z","uploadedBy":"Wealthmax Financial Advisers Pvt. Ltd.","url":"https://protectionmortgagecrm.blob.core.windows.net/crm/staging/case-documents/28/458/458_CASE-0383_2026-09-21/Life-Insurance-with-Critical-Illness-Extra-Policy-Summary_03.pdf?sv=2026-02-06&se=2026-09-29T09%3A47%3A37Z&sr=b&sp=r&rscd=attachment%3B+filename%3D\"Legal+%26+General+Life+%2B+CI+(Standard)+-+Life+Insurance+with+Critical+Illness+Extra+Policy+Summary.pdf\"%3B+filename*%3DUTF-8%27%27Legal%2520%26%2520General%2520Life%2520%2B%2520CI%2520%2528Standard%2529%2520-%2520Life%2520Insurance%2520with%2520Critical%2520Illness%2520Extra%2520Policy%2520Summary.pdf&sig=VkW4T%2FeaJFsvpYj5Puqmt%2B4sdmkdpGGINz6ZAZlNLTY%3D"}],"fetch":{"jobId":124,"state":"Completed","inProgress":false,"requestedAt":"2026-09-22T09:25:52.299534Z","completedAt":"2026-09-22T09:25:58.277094Z","attemptCount":1,"errorCode":null,"errorMessage":null}},"timestamp":"2026-09-29T08:47:37.5491622Z"}
2026-09-29 08:47:35.694 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:c520944df28529199af132239ffcace7] HTTP GET /api/v1/business/sourcing/cases/458/recommended-products/237 responded 200 in 24.7224 ms
2026-09-29 08:47:35.694 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:255643f437a4] [T:c520944df28529199af132239ffcace7] HTTP GET /api/v1/business/sourcing/cases/458/recommended-products/237 200
Req: [no body] Res: {"success":true,"data":[{"id":132,"caseId":458,"quoteId":237,"iPipelineQuoteId":"f3abcd6a-78ab-473f-8b49-d1a5ddbbbd17","benefitId":"965f2318-b0c7-428d-88c2-af513936fffe","benefitKey":"Term|Both|Life","benefitName":"Life Insurance","coverType":"Life","displayName":"Joint","isManualProduct":false,"basicInformation":{"productName":"Legal & General Life + CI (Standard)","provider":"Legal & General","providerId":126,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":524,"name":"Ayra Ali"},{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Joint","policyNumber":"PI5656","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Reviewable","premiumAmount":5000.00,"productType":"Term"},"commissionInformation":{"grossCommission":50.00,"commissionMonths":"12 Months","commissionType":"Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"fgg"},"isComplete":false},{"id":133,"caseId":458,"quoteId":237,"iPipelineQuoteId":"f3abcd6a-78ab-473f-8b49-d1a5ddbbbd17","benefitId":"513de09c-11d7-4d07-92b3-a88d72b48e2a","benefitKey":"Term|Both|LifeOrCriticalIllness","benefitName":"Life Insurance","coverType":"Life or Critical Illness","displayName":"Joint","isManualProduct":false,"basicInformation":{"productName":"Legal & General Life + CI (Standard)","provider":"Legal & General","providerId":126,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":524,"name":"Ayra Ali"},{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Joint","policyNumber":"PY4545","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Guaranteed","premiumAmount":5000.00,"productType":"Term"},"commissionInformation":{"grossCommission":90.00,"commissionMonths":"24 Months","commissionType":"Non-Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"fgfg"},"isComplete":false},{"id":134,"caseId":458,"quoteId":237,"iPipelineQuoteId":"778ca123-c2bf-4fb9-8e3f-49a8c0f2b75d","benefitId":"593f6755-d2a1-48b5-9ce1-aca513514145","benefitKey":"Term|Second|LifeOrCriticalIllness","benefitName":"Life Insurance","coverType":"Life or Critical Illness","displayName":"Kamran","isManualProduct":false,"basicInformation":{"productName":"VitalityLife Optimised Life & SIC 1X","provider":"VitalityLife","providerId":131,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[{"caseClientId":525,"name":"Kamran Ali"}],"sumAssured":50000.00,"policyType":["Life Cover"],"singleJointPolicy":"Single","policyNumber":"PG5656","termType":"Term","terms":5,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":"Reviewable","premiumAmount":41.97,"productType":"Term"},"commissionInformation":{"grossCommission":430.44,"commissionMonths":"12 Months","commissionType":"Indemnity"},"recommendations":{"policyRecommendations":null,"providerRecommended":"gfgf"},"isComplete":false}],"timestamp":"2026-09-29T08:47:35.6863297Z"}
2026-09-29 08:47:35.673 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:1e65cafe227b5e4adca521ad9281760d] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 3.6765 ms
2026-09-29 08:47:35.673 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:b3895f464eaf] [T:1e65cafe227b5e4adca521ad9281760d] 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":140,"name":"Gagan Deep","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-21T10:02:25.279225Z"},{"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":141,"name":"Uinsure","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-25T08:12:50.262205Z"},{"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":100,"totalElements":21,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-09-29T08:47:35.6732812Z"}
2026-09-29 08:47:33.416 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:52d33967af9986d898ce66a8e91f0ddd] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 5.6391 ms
2026-09-29 08:47:33.416 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1c7945c6af51] [T:52d33967af9986d898ce66a8e91f0ddd] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A47%3A33Z&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=v7gPFARimq4QddiEEEf6biOStRVg4f87GsH4TIdFM3o%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-09-29T08:47:33.416355Z"}
2026-09-29 08:47:22.156 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:a73e12d707abe36b6f98eadd0d925f65] HTTP GET /api/v1/business/cases/434 responded 200 in 22.5493 ms
2026-09-29 08:47:22.156 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7169800d9e7d] [T:a73e12d707abe36b6f98eadd0d925f65] HTTP GET /api/v1/business/cases/434 200
Req: [no body] Res: {"success":true,"data":{"id":434,"userFacingCaseId":"CASE-0359","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":497,"clientId":215,"clientName":"Testing Case One","factFindId":497},{"caseClientId":498,"clientId":216,"clientName":"Testing Case Two","factFindId":498}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-09-14T14:08:37.029741Z","updatedBy":"656","updatedAt":"2026-09-21T11:35:44.049766Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-09-14T14:11:09.325599Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-09-14T14:08:37.484584Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-09-14T14:11:41.717355Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-09-14T14:13:00.092921Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-09-14T14:13:06.640478Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-09-14T14:13:19.168348Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-09-14T14:13:24.560192Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-09-14T14:13:44.109887Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Business Life & Critical Illness","status":"Not Started","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"BusinessLifeAndCriticalIllness","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-09-14T14:15:44.509451Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Not Started","completedAt":null,"isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Not Started","completedAt":null,"isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":215,"fullName":"Testing Case One"},{"clientId":216,"fullName":"Testing Case Two"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:47:22.1560158Z"}
2026-09-29 08:47:22.141 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:60a345926135a733ca4f88081baa1ccf] HTTP GET /api/v1/business/fact-finds/clients/498/personal-details responded 200 in 7.5721 ms
2026-09-29 08:47:22.141 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:534f54633919] [T:60a345926135a733ca4f88081baa1ccf] HTTP GET /api/v1/business/fact-finds/clients/498/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":363,"factFindId":498,"title":"Mr","firstName":"Testing","lastName":"Case Two","email":"gagan.deep+852@wealthmax.co.uk","mobilePhone":"+44 9155555555","middleName":null,"dateOfBirth":"1995-08-09","countryOfBirth":"Fiji","nationality":"Fijian","maritalStatus":"Single","gender":"Female","genderOther":null,"anticipatedRetirementAge":70,"anticipatedEmploymentChange":null,"isSmoker":false,"lastSmokedYears":null,"lastSmokedMonths":null,"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-08-19T09:15:01.951186Z","updatedAt":null},"timestamp":"2026-09-29T08:47:22.1400599Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":498,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:47:22.140 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:6f8b91795a7a3de92575563b990adf11] HTTP GET /api/v1/business/cases/434/notes/summary responded 200 in 13.2128 ms
2026-09-29 08:47:22.140 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7a624dd01b55] [T:6f8b91795a7a3de92575563b990adf11] HTTP GET /api/v1/business/cases/434/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:47:22.1404804Z"}
2026-09-29 08:47:22.139 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:cae730ca9bde3b6d3ee75f82636af169] HTTP GET /api/v1/business/sourcing/cases/434/business-protection-needs responded 200 in 8.8553 ms
2026-09-29 08:47:22.139 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:0a93754d7ea1] [T:cae730ca9bde3b6d3ee75f82636af169] HTTP GET /api/v1/business/sourcing/cases/434/business-protection-needs 200
Req: [no body] Res: {"success":true,"data":{"id":31,"caseId":434,"livesAssured":"Joint","benefitType":"Level Term Assurance","relevantLifeOnly":true,"premiumType":"Guaranteed","coverScenarios":[{"id":111,"scenarioType":"LifeCover","termYears":12,"toAgeYears":null,"coverAmount":1000.00},{"id":112,"scenarioType":"CriticalIllnessCover","termYears":12,"toAgeYears":null,"coverAmount":1000.00}],"totalPermanentDisability":"None","waiverOfPremium":"None","indexation":"10%","policyInterestRate":null},"timestamp":"2026-09-29T08:47:22.1361844Z","preCheck":{"area":"Sourcing","pageKey":"BusinessProtectionNeeds","pageTitle":"Needs & Preferences","caseClientId":null,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:47:22.137 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ff04b98f612f5b965159d178c065e345] HTTP GET /api/v1/business/fact-finds/clients/497/personal-details responded 200 in 12.9989 ms
2026-09-29 08:47:22.137 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:c16653bd4ad9] [T:ff04b98f612f5b965159d178c065e345] HTTP GET /api/v1/business/fact-finds/clients/497/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":362,"factFindId":497,"title":"Mr","firstName":"Testing","lastName":"Case One","email":"Yogesh.j+567@wealthmax.co.uk","mobilePhone":"+44 9155555555","middleName":null,"dateOfBirth":"1992-08-05","countryOfBirth":"Cuba","nationality":"Cuban","maritalStatus":"Married","gender":"Male","genderOther":null,"anticipatedRetirementAge":65,"anticipatedEmploymentChange":null,"isSmoker":false,"lastSmokedYears":null,"lastSmokedMonths":null,"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-08-19T09:14:20.082967Z","updatedAt":"2026-09-14T14:14:43.247478Z"},"timestamp":"2026-09-29T08:47:22.1353229Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":497,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:47:20.723 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:30b98976fcbc05ebbe02258af0799606] HTTP GET /api/v1/business/cases/434 responded 200 in 32.6344 ms
2026-09-29 08:47:20.723 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ae011636ec06] [T:30b98976fcbc05ebbe02258af0799606] HTTP GET /api/v1/business/cases/434 200
Req: [no body] Res: {"success":true,"data":{"id":434,"userFacingCaseId":"CASE-0359","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":497,"clientId":215,"clientName":"Testing Case One","factFindId":497},{"caseClientId":498,"clientId":216,"clientName":"Testing Case Two","factFindId":498}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-09-14T14:08:37.029741Z","updatedBy":"656","updatedAt":"2026-09-21T11:35:44.049766Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-09-14T14:11:09.325599Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-09-14T14:08:37.484584Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-09-14T14:11:41.717355Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-09-14T14:13:00.092921Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-09-14T14:13:06.640478Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-09-14T14:13:19.168348Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-09-14T14:13:24.560192Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-09-14T14:13:44.109887Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Business Life & Critical Illness","status":"Not Started","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"BusinessLifeAndCriticalIllness","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-09-14T14:15:44.509451Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Not Started","completedAt":null,"isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Not Started","completedAt":null,"isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":215,"fullName":"Testing Case One"},{"clientId":216,"fullName":"Testing Case Two"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:47:20.7234332Z"}
2026-09-29 08:47:20.710 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9f26072fab9f88d9dc59d889eaefac77] HTTP GET /api/v1/business/cases/434/notes/summary responded 200 in 25.5029 ms
2026-09-29 08:47:20.710 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:a5cef029e123] [T:9f26072fab9f88d9dc59d889eaefac77] HTTP GET /api/v1/business/cases/434/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:47:20.7100446Z"}
2026-09-29 08:47:17.320 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:1d3012ee70447acf5038944c2a140167] HTTP GET /api/v1/business/cases/my responded 200 in 22.0043 ms
2026-09-29 08:47:17.320 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d45c0736e4db] [T:1d3012ee70447acf5038944c2a140167] HTTP GET /api/v1/business/cases/my 200
Req: [no body] Res: {"success":true,"data":{"cases":{"content":[{"id":456,"userFacingCaseId":"CASE-0381","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":198,"clientName":"Anmol Grgr Abc","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":["Aviva"],"recommendedProductNames":["wert"],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T11:02:23.711093Z"},{"id":455,"userFacingCaseId":"CASE-0380","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T10:58:14.842612Z"},{"id":451,"userFacingCaseId":"CASE-0376","productType":"Business Protection","productNames":["Business Loan Insurance","Business Health Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":73,"clientName":"James Faulkner","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-21T08:58:02.597611Z"},{"id":434,"userFacingCaseId":"CASE-0359","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null},{"caseClientId":0,"clientId":216,"clientName":"Testing Case Two","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-09-14T14:08:37.029741Z"},{"id":377,"userFacingCaseId":"CASE-0304","productType":"Business Protection","productNames":["Keyman Protection","Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T13:08:19.409345Z"},{"id":376,"userFacingCaseId":"CASE-0303","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null},{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T13:03:08.07534Z"},{"id":375,"userFacingCaseId":"CASE-0302","productType":"Business Protection","productNames":["Keyman Protection","Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":220,"clientName":"Krishna Lal Kanth","factFindId":null},{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-28T10:44:15.643549Z"},{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":["VitalityLife"],"recommendedProductNames":["VitalityLife Optimised Life & Business SIC 2X"],"isLocked":false,"canReassign":true,"createdAt":"2026-08-25T12:24:56.515071Z"},{"id":366,"userFacingCaseId":"CASE-0294","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":218,"clientName":"Gagan Gagan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-24T09:06:35.294268Z"},{"id":365,"userFacingCaseId":"CASE-0293","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":51,"clientName":"Jos Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-24T09:03:24.59935Z"},{"id":364,"userFacingCaseId":"CASE-0292","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":111,"clientName":"Goldy Brar","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-21T09:40:42.223604Z"},{"id":362,"userFacingCaseId":"CASE-0291","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-20T08:15:53.278112Z"},{"id":361,"userFacingCaseId":"CASE-0290","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":215,"clientName":"Testing Case One","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-19T11:56:41.916289Z"},{"id":358,"userFacingCaseId":"CASE-0287","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":181,"clientName":"Ayra Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-18T09:10:14.316615Z"},{"id":308,"userFacingCaseId":"CASE-0241","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":180,"clientName":"Gagan Deep Khajuria","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-06T07:41:50.491252Z"},{"id":302,"userFacingCaseId":"CASE-0235","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":53,"clientName":"Living Stone","factFindId":null},{"caseClientId":0,"clientId":185,"clientName":"Shashi Abrol","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-08-05T10:33:45.779695Z"},{"id":267,"userFacingCaseId":"CASE-0201","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":137,"clientName":"Aqfdqaf Afasf","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T08:31:34.28071Z"},{"id":265,"userFacingCaseId":"CASE-0199","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":73,"clientName":"James Faulkner","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T07:41:33.179065Z"},{"id":264,"userFacingCaseId":"CASE-0198","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":172,"clientName":"Kamran Ali","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-30T07:38:18.037744Z"},{"id":261,"userFacingCaseId":"CASE-0196","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":184,"clientName":"AzaZ Azaz","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-29T11:49:50.152146Z"},{"id":231,"userFacingCaseId":"CASE-0174","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":59,"clientName":"Gagan Gagan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-27T09:39:10.740963Z"},{"id":185,"userFacingCaseId":"CASE-0151","productType":"Business Protection","productNames":["Shareholder Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":51,"clientName":"Jos Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-20T09:06:34.245537Z"},{"id":172,"userFacingCaseId":"CASE-0140","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":608,"caseStatusName":"Pending","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":137,"clientName":"Aqfdqaf Afasf","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T13:24:13.835872Z"},{"id":169,"userFacingCaseId":"CASE-0137","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":611,"caseStatusName":"Cancelled","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":103,"clientName":"Michael Ernest","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T12:06:34.489084Z"},{"id":168,"userFacingCaseId":"CASE-0136","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":54,"clientName":"Josh Robert Buttler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-16T12:01:25.46509Z"},{"id":129,"userFacingCaseId":"CASE-0106","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"Initiated","clients":[{"caseClientId":0,"clientId":26,"clientName":"Jos Butler","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-09T12:53:01.795636Z"},{"id":99,"userFacingCaseId":"CASE-0076","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"FactFindCompleted","clients":[{"caseClientId":0,"clientId":86,"clientName":"Denisa Zama","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-06T13:36:31.60657Z"},{"id":86,"userFacingCaseId":"CASE-0064","productType":"Business Protection","productNames":["Relevant Life Cover","Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":78,"clientName":"Kawalpreet Kaur","factFindId":null},{"caseClientId":0,"clientId":79,"clientName":"Shubam Goel","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-07-03T13:21:11.87179Z"},{"id":50,"userFacingCaseId":"CASE-0035","productType":"Business Protection","productNames":["Relevant Life Cover","Business Loan Insurance","Keyman Protection","Shareholder Protection"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":46,"clientName":"Hedric Test","factFindId":null},{"caseClientId":0,"clientId":32,"clientName":"Venessa Kolh","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-25T10:54:58.627376Z"},{"id":49,"userFacingCaseId":"CASE-0034","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SanctionCheckCompleted","clients":[{"caseClientId":0,"clientId":45,"clientName":"Fillip Raw","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-25T08:38:31.47846Z"},{"id":43,"userFacingCaseId":"CASE-0029","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":37,"clientName":"Dawood Ibrahimm","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T12:15:00.82981Z"},{"id":35,"userFacingCaseId":"CASE-0021","productType":"Business Protection","productNames":["Business Health Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":35,"clientName":"Harnain Koul","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T10:47:28.836589Z"},{"id":32,"userFacingCaseId":"CASE-0018","productType":"Business Protection","productNames":["Shareholder Protection"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":21,"clientName":"Gagandeep Singh","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T10:09:27.699557Z"},{"id":30,"userFacingCaseId":"CASE-0016","productType":"Business Protection","productNames":["Business Loan Insurance"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Pre-Recommendation","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":31,"clientName":"Vijay Subrimanyum","factFindId":null},{"caseClientId":0,"clientId":43,"clientName":"Dudu Fasdfasd","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T09:33:00.013987Z"},{"id":28,"userFacingCaseId":"CASE-0014","productType":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":609,"caseStatusName":"Deferred","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":30,"clientName":"Travis Scott","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T08:57:26.965488Z"},{"id":26,"userFacingCaseId":"CASE-0012","productType":"Business Protection","productNames":["Business Life & Critical Illness"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":0,"clientId":29,"clientName":"Palak Mahajan","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T08:15:10.396302Z"},{"id":18,"userFacingCaseId":"CASE-0008","productType":"Business Protection","productNames":["Relevant Life Cover"],"caseStatusId":614,"caseStatusName":"Live","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"stage":"Lead","internalState":"SuitabilityGenerated","clients":[{"caseClientId":0,"clientId":20,"clientName":"Agham Khajuria","factFindId":null}],"caseOwnerName":null,"branchName":null,"isBranchHq":null,"introducerName":null,"introducerUserId":null,"lenderNames":[],"providerNames":[],"recommendedProductNames":[],"isLocked":false,"canReassign":true,"createdAt":"2026-06-23T07:28:13.166757Z"}],"pagination":{"page":0,"size":50,"totalElements":37,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}}},"timestamp":"2026-09-29T08:47:17.3195521Z"}
2026-09-29 08:47:17.305 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ea09b5174cdd2de2d9b81ab5e4b832de] HTTP GET /api/v1/business/case-statuses responded 200 in 4.8510 ms
2026-09-29 08:47:17.305 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d3c1d1377b39] [T:ea09b5174cdd2de2d9b81ab5e4b832de] 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-09-29T08:47:17.3051158Z"}
2026-09-29 08:47:17.302 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:8fcfcb5f2c44d77bb4248d8a97e6d9a3] HTTP GET /api/v1/business/cases/products responded 200 in 2.4114 ms
2026-09-29 08:47:17.302 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:5c4ef3ffbf4d] [T:8fcfcb5f2c44d77bb4248d8a97e6d9a3] HTTP GET /api/v1/business/cases/products 200
Req: [no body] Res: {"success":true,"data":[{"id":8,"name":"Relevant Life Cover"},{"id":9,"name":"Business Loan Insurance"},{"id":10,"name":"Keyman Protection"},{"id":11,"name":"Shareholder Protection"},{"id":12,"name":"Business Health Cover"},{"id":13,"name":"Business Life & Critical Illness"}],"timestamp":"2026-09-29T08:47:17.3022325Z"}
2026-09-29 08:47:17.301 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9c2bd1264ba04115e47641e701d00e1d] HTTP GET /api/v1/business/cases/introducer-candidates responded 200 in 3.5320 ms
2026-09-29 08:47:17.301 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:495f22a5e83d] [T:9c2bd1264ba04115e47641e701d00e1d] HTTP GET /api/v1/business/cases/introducer-candidates 200
Req: [no body] Res: {"success":true,"data":[{"id":658,"fullName":"Gagan Deep Pi"},{"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-09-29T08:47:17.3013179Z"}
2026-09-29 08:47:14.228 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:5401faa4f9f79541fe106c0aac5a5554] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.2679 ms
2026-09-29 08:47:14.228 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7cf8e74289c7] [T:5401faa4f9f79541fe106c0aac5a5554] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A47%3A14Z&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=Vp0PirwKVwW51Jqj9CytopAAWZWcWo38RcJf7S8ItA0%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-09-29T08:47:14.2280197Z"}
2026-09-29 08:46:59.591 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:cf2d09f99a2002cdc3318ed9056d9ef3] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 7.2056 ms
2026-09-29 08:46:59.591 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:cbf1390fe375] [T:cf2d09f99a2002cdc3318ed9056d9ef3] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A46%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=tHPNSqf6kft1LF1JzT2%2FWmI68JZoCBucGKi9%2BG5fzKg%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-09-29T08:46:59.5916392Z"}
2026-09-29 08:46:48.963 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:029482a7ae0887f75f0e93080034ef5b] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/addresses responded 200 in 3.8134 ms
2026-09-29 08:46:48.963 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:d2478d587832] [T:029482a7ae0887f75f0e93080034ef5b] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/addresses 200
Req: [no body] Res: {"success":true,"data":[{"id":166,"isCurrent":true,"residentialStatus":"Living With Parents","moveInDate":null,"moveOutDate":null,"city":"Brentford","flatNameOrNumber":"5","buildingName":"T C S Express Worldwide Ltd","streetAddress":"Great West Road","county":"Middlesex","postCode":"TW8 9DW","country":"England","residentialAddress":"T C S Express Worldwide Ltd, 1000 Great West Road, Brentford, Middlesex","town":"Brentford","constituentCountry":"hhhgf"}],"timestamp":"2026-09-29T08:46:48.9632672Z"}
2026-09-29 08:46:48.583 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:536cfd47d798e41cb00d5e065218550c] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/dependants responded 200 in 3.9799 ms
2026-09-29 08:46:48.583 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:be073dc4520e] [T:536cfd47d798e41cb00d5e065218550c] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/dependants 200
Req: [no body] Res: {"success":true,"data":[{"id":124,"name":"Taimur Ali Khan","dateOfBirth":"1980-07-03","relationshipType":"Spouse","dependencyTermYears":null,"isForWholeOfLife":true}],"timestamp":"2026-09-29T08:46:48.5835368Z"}
2026-09-29 08:46:48.574 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e9a3857944952f9a2e70a893026dbabd] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details responded 200 in 6.7763 ms
2026-09-29 08:46:48.574 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:9476b58ba21f] [T:e9a3857944952f9a2e70a893026dbabd] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":288,"factFindId":415,"title":"Miss","firstName":"Ayra","lastName":"Ali","email":"ayra22@gmail.com","mobilePhone":"+44 5566778899","middleName":null,"dateOfBirth":"1992-07-22","countryOfBirth":null,"nationality":"British","maritalStatus":"Single","gender":"Female","genderOther":null,"anticipatedRetirementAge":65,"anticipatedEmploymentChange":null,"isSmoker":true,"lastSmokedYears":0,"lastSmokedMonths":4,"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-29T10:15:03.694584Z","updatedAt":null},"timestamp":"2026-09-29T08:46:48.5732311Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:48.396 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0b4e8b31261844e57be3faea622d2d6b] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/addresses responded 200 in 4.1355 ms
2026-09-29 08:46:48.396 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e25ca3de85d1] [T:0b4e8b31261844e57be3faea622d2d6b] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/addresses 200
Req: [no body] Res: {"success":true,"data":[{"id":166,"isCurrent":true,"residentialStatus":"Living With Parents","moveInDate":null,"moveOutDate":null,"city":"Brentford","flatNameOrNumber":"5","buildingName":"T C S Express Worldwide Ltd","streetAddress":"Great West Road","county":"Middlesex","postCode":"TW8 9DW","country":"England","residentialAddress":"T C S Express Worldwide Ltd, 1000 Great West Road, Brentford, Middlesex","town":"Brentford","constituentCountry":"hhhgf"}],"timestamp":"2026-09-29T08:46:48.3965589Z"}
2026-09-29 08:46:48.141 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:38d7ef964767f3221a12ad1745567d70] HTTP GET /api/v1/business/cases/367 responded 200 in 182.8447 ms
2026-09-29 08:46:48.141 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7752e3f9b0ba] [T:38d7ef964767f3221a12ad1745567d70] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:46:48.1413155Z"}
2026-09-29 08:46:47.978 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:756d73ff9bc0f8e8913422b81e526c80] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 25.7973 ms
2026-09-29 08:46:47.978 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e30b64180a4f] [T:756d73ff9bc0f8e8913422b81e526c80] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:46:47.978033Z"}
2026-09-29 08:46:47.976 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:9cf668eae2f02197d97f09d71044d269] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details responded 200 in 24.6868 ms
2026-09-29 08:46:47.975 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1e02eb0b10c4] [T:9cf668eae2f02197d97f09d71044d269] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":288,"factFindId":415,"title":"Miss","firstName":"Ayra","lastName":"Ali","email":"ayra22@gmail.com","mobilePhone":"+44 5566778899","middleName":null,"dateOfBirth":"1992-07-22","countryOfBirth":null,"nationality":"British","maritalStatus":"Single","gender":"Female","genderOther":null,"anticipatedRetirementAge":65,"anticipatedEmploymentChange":null,"isSmoker":true,"lastSmokedYears":0,"lastSmokedMonths":4,"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-29T10:15:03.694584Z","updatedAt":null},"timestamp":"2026-09-29T08:46:47.9739563Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:47.973 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:ee6dec542da910a342c8e817f31184af] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/dependants responded 200 in 24.9904 ms
2026-09-29 08:46:47.973 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ee78cf8d98f7] [T:ee6dec542da910a342c8e817f31184af] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details/dependants 200
Req: [no body] Res: {"success":true,"data":[{"id":124,"name":"Taimur Ali Khan","dateOfBirth":"1980-07-03","relationshipType":"Spouse","dependencyTermYears":null,"isForWholeOfLife":true}],"timestamp":"2026-09-29T08:46:47.9733944Z"}
2026-09-29 08:46:47.970 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:732bea152e4143b26f189c5af71edb33] HTTP GET /api/v1/business/cases/367/fact-find/start-date responded 200 in 17.7945 ms
2026-09-29 08:46:47.970 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:10a84a1a1ba5] [T:732bea152e4143b26f189c5af71edb33] HTTP GET /api/v1/business/cases/367/fact-find/start-date 200
Req: [no body] Res: {"success":true,"data":{"startedAt":"2026-08-25T12:25:06.752Z"},"timestamp":"2026-09-29T08:46:47.9700692Z"}
2026-09-29 08:46:35.895 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0e645fbc38b593006950f4b1f3a12bf9] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 5.7760 ms
2026-09-29 08:46:35.895 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:533455b4caac] [T:0e645fbc38b593006950f4b1f3a12bf9] HTTP GET /api/v1/business/my-tenant/branding 200
Req: [no body] Res: {"success":true,"data":{"primaryColor":"#FF5C00","secondaryColor":"#FF13F0","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-09-29T09%3A46%3A35Z&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=hFazMkF1X6tyBCmnwt5JNmoLa91QdbyC6i%2B9jQETBVI%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-09-29T08:46:35.8953245Z"}
2026-09-29 08:46:30.979 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:29b1165b388c3a640d5c7b2022d2a019] HTTP GET /api/v1/business/case-clients/415/product-requirements/keyman-protection responded 200 in 4.2262 ms
2026-09-29 08:46:30.979 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:c686b80923d2] [T:29b1165b388c3a640d5c7b2022d2a019] HTTP GET /api/v1/business/case-clients/415/product-requirements/keyman-protection 200
Req: [no body] Res: {"success":true,"data":{"id":10,"caseClientId":415,"isComplete":true,"entries":[{"id":11,"title":"Mr","firstName":"Gagan","lastName":"Gagan","dateOfBirth":"1999-08-04","jobTitle":"Goldy","typeOfCover":"test","sumAssured":50000.00,"termYears":null,"toAge":65}],"createdAt":"2026-08-25T12:26:00.128486Z","updatedAt":null},"timestamp":"2026-09-29T08:46:30.978417Z","preCheck":{"area":"Product Requirement","pageKey":"KeymanProtection","pageTitle":"Keyman Protection","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:30.565 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0fa08a10b19735955a928d0f74ea59bd] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 11.0379 ms
2026-09-29 08:46:30.565 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7c2fe3847a55] [T:0fa08a10b19735955a928d0f74ea59bd] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:46:30.5656682Z"}
2026-09-29 08:46:30.564 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e00b3e257180589edf8fcac69b8b6197] HTTP GET /api/v1/business/cases/367 responded 200 in 27.1988 ms
2026-09-29 08:46:30.564 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:7de88fa1c885] [T:e00b3e257180589edf8fcac69b8b6197] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:46:30.5644236Z"}
2026-09-29 08:46:30.549 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:fc9dc577a744e10424e47fc1e8c3b190] HTTP GET /api/v1/business/case-clients/415/product-requirements/keyman-protection responded 200 in 3.9672 ms
2026-09-29 08:46:30.548 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:6344f8f342f5] [T:fc9dc577a744e10424e47fc1e8c3b190] HTTP GET /api/v1/business/case-clients/415/product-requirements/keyman-protection 200
Req: [no body] Res: {"success":true,"data":{"id":10,"caseClientId":415,"isComplete":true,"entries":[{"id":11,"title":"Mr","firstName":"Gagan","lastName":"Gagan","dateOfBirth":"1999-08-04","jobTitle":"Goldy","typeOfCover":"test","sumAssured":50000.00,"termYears":null,"toAge":65}],"createdAt":"2026-08-25T12:26:00.128486Z","updatedAt":null},"timestamp":"2026-09-29T08:46:30.5474737Z","preCheck":{"area":"Product Requirement","pageKey":"KeymanProtection","pageTitle":"Keyman Protection","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:28.531 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:0d2793f914dfb1db9b77a92395ef7a29] HTTP GET /api/v1/business/cases/367 responded 200 in 31.4454 ms
2026-09-29 08:46:28.531 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:c87519885e13] [T:0d2793f914dfb1db9b77a92395ef7a29] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:46:28.5313636Z"}
2026-09-29 08:46:28.522 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:15c572216fe5896de2c58a5eecf61886] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 10.4830 ms
2026-09-29 08:46:28.522 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:e353ed156acc] [T:15c572216fe5896de2c58a5eecf61886] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:46:28.5222618Z"}
2026-09-29 08:46:28.518 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e002b6fb536b546112d3ac7bc0bc3efe] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details responded 200 in 6.9304 ms
2026-09-29 08:46:28.518 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:4567a91c241f] [T:e002b6fb536b546112d3ac7bc0bc3efe] HTTP GET /api/v1/business/fact-finds/clients/415/personal-details 200
Req: [no body] Res: {"success":true,"data":{"id":288,"factFindId":415,"title":"Miss","firstName":"Ayra","lastName":"Ali","email":"ayra22@gmail.com","mobilePhone":"+44 5566778899","middleName":null,"dateOfBirth":"1992-07-22","countryOfBirth":null,"nationality":"British","maritalStatus":"Single","gender":"Female","genderOther":null,"anticipatedRetirementAge":65,"anticipatedEmploymentChange":null,"isSmoker":true,"lastSmokedYears":0,"lastSmokedMonths":4,"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-29T10:15:03.694584Z","updatedAt":null},"timestamp":"2026-09-29T08:46:28.5169849Z","preCheck":{"area":"Fact Find","pageKey":"PersonalDetails","pageTitle":"Personal Details","caseClientId":415,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:28.518 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:2bb08b7625a29a16c39902338c88be50] HTTP GET /api/v1/business/sourcing/cases/367/business-protection-needs responded 200 in 6.2212 ms
2026-09-29 08:46:28.517 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1925104a8c6b] [T:2bb08b7625a29a16c39902338c88be50] HTTP GET /api/v1/business/sourcing/cases/367/business-protection-needs 200
Req: [no body] Res: {"success":true,"data":{"id":24,"caseId":367,"livesAssured":"Client1","benefitType":"Level Term Assurance","relevantLifeOnly":false,"premiumType":"Guaranteed","coverScenarios":[{"id":89,"scenarioType":"LifeOrEarlierCiCover","termYears":null,"toAgeYears":65,"coverAmount":50000.00}],"totalPermanentDisability":null,"waiverOfPremium":"Client1","indexation":"Level","policyInterestRate":null},"timestamp":"2026-09-29T08:46:28.5154495Z","preCheck":{"area":"Sourcing","pageKey":"BusinessProtectionNeeds","pageTitle":"Needs & Preferences","caseClientId":null,"outstandingCount":0,"totalCount":0,"highestOutstandingPriority":null,"pageLevelIssues":[],"sectionIssues":[],"fieldIssues":[],"rowIssues":[]}}
2026-09-29 08:46:06.798 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:2b2f7e2307b0beec6caf1f8b43b6c7d5] HTTP GET /api/v1/business/sourcing/cases/367/recommended-products/137 responded 200 in 96.4414 ms
2026-09-29 08:46:06.798 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:f9d5e73548c3] [T:2b2f7e2307b0beec6caf1f8b43b6c7d5] HTTP GET /api/v1/business/sourcing/cases/367/recommended-products/137 200
Req: [no body] Res: {"success":true,"data":[{"id":33,"caseId":367,"quoteId":137,"iPipelineQuoteId":null,"benefitId":null,"benefitKey":null,"benefitName":null,"coverType":null,"displayName":null,"isManualProduct":false,"basicInformation":{"productName":"VitalityLife Optimised Life & Business SIC 2X","provider":"VitalityLife","providerId":131,"addToTrust":false,"trustType":null},"policyInformation":{"clients":[],"sumAssured":50000.00,"policyType":[],"singleJointPolicy":"Single","policyNumber":"987654321","termType":null,"terms":null,"toAge":null,"businessType":"New Business","protectionBasis":"Level","premiumPeriod":null,"premiumAmount":13.58,"productType":"Term"},"commissionInformation":{"grossCommission":null,"commissionMonths":"24 Months","commissionType":"Non-Indemnity"},"recommendations":{"policyRecommendations":"aqwsedrfg","providerRecommended":"34ertyhj"},"isComplete":false}],"timestamp":"2026-09-29T08:46:06.7770574Z"}
2026-09-29 08:46:06.723 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:862ba282ced0e0ebcb9800ce35a24210] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 19.6909 ms
2026-09-29 08:46:06.723 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:220ed1ba7b88] [T:862ba282ced0e0ebcb9800ce35a24210] 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":140,"name":"Gagan Deep","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-21T10:02:25.279225Z"},{"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":141,"name":"Uinsure","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-25T08:12:50.262205Z"},{"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":100,"totalElements":21,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-09-29T08:46:06.7230515Z"}
2026-09-29 08:46:04.130 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:530a80c043bf7be5e57356dcea2c33d3] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 4.0872 ms
2026-09-29 08:46:04.129 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:306c51a851df] [T:530a80c043bf7be5e57356dcea2c33d3] 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":140,"name":"Gagan Deep","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-21T10:02:25.279225Z"},{"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":141,"name":"Uinsure","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-25T08:12:50.262205Z"},{"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":100,"totalElements":21,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-09-29T08:46:04.1296448Z"}
2026-09-29 08:46:03.701 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:511d9a45f3837e6903e74dc40fc478cc] HTTP GET /api/v1/business/cases/367 responded 200 in 23.7615 ms
2026-09-29 08:46:03.701 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:ff2c84708810] [T:511d9a45f3837e6903e74dc40fc478cc] HTTP GET /api/v1/business/cases/367 200
Req: [no body] Res: {"success":true,"data":{"id":367,"userFacingCaseId":"CASE-0295","productType":"Business Protection","productTypeDisplayName":"Business Protection","productNames":["Keyman Protection"],"caseStatusId":595,"caseStatusName":"New Case","caseReviewGrade":null,"caseReviewGradeDisplayName":null,"preCheckStatus":"Not Started","preCheckOutstandingCount":0,"stage":"Lead","internalState":"SourcingCompleted","clients":[{"caseClientId":415,"clientId":181,"clientName":"Ayra Ali","factFindId":415}],"assignedUserId":656,"assignedUserName":"Wealthmax Financial Advisers Pvt. Ltd.","assignedUserArName":null,"assignedUserBranchName":"Wealthmax Financial Advisers Ltd.","introducerUserId":null,"introducerName":null,"isLocked":false,"lockedAt":null,"canReassign":true,"tenantId":28,"createdBy":"656","createdAt":"2026-08-25T12:24:56.515071Z","updatedBy":"656","updatedAt":"2026-09-21T11:01:07.251459Z","caseInformation":{"factFind":[{"order":1,"sectionType":"Personal Details","status":"Complete","completedAt":"2026-08-25T12:25:09.030979Z","preCheckArea":"Fact Find","preCheckPageKey":"PersonalDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":2,"sectionType":"Income","status":"Complete","completedAt":"2026-08-25T12:24:57.350783Z","preCheckArea":"Fact Find","preCheckPageKey":"Income","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":3,"sectionType":"Expenditure","status":"Complete","completedAt":"2026-08-25T12:25:13.573356Z","preCheckArea":"Fact Find","preCheckPageKey":"Expenditure","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":4,"sectionType":"Assets","status":"Complete","completedAt":"2026-08-25T12:25:15.084336Z","preCheckArea":"Fact Find","preCheckPageKey":"Assets","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":5,"sectionType":"Credit","status":"Complete","completedAt":"2026-08-25T12:25:16.791485Z","preCheckArea":"Fact Find","preCheckPageKey":"Credit","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":8,"sectionType":"Company Details","status":"Complete","completedAt":"2026-08-27T10:23:59.524369Z","preCheckArea":"Fact Find","preCheckPageKey":"CompanyDetails","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":9,"sectionType":"Existing Property","status":"Complete","completedAt":"2026-08-25T12:25:22.424877Z","preCheckArea":"Fact Find","preCheckPageKey":"ExistingProperty","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]},{"order":10,"sectionType":"Financial Overview","status":"Complete","completedAt":"2026-08-25T12:25:25.847433Z","preCheckArea":"Fact Find","preCheckPageKey":"FinancialOverview","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}],"productType":{"name":"Business Protection","productNames":[{"name":"Keyman Protection","status":"Complete","completedAt":null,"preCheckArea":"Product Requirement","preCheckPageKey":"KeymanProtection","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null,"clientCounts":[]}]},"sourcing":"Business Protection","sourcingSection":[{"order":1,"sectionType":"Needs & Preferences","status":"Complete","completedAt":"2026-08-25T12:26:56.33742Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionNeeds","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":2,"sectionType":"Products","status":"Complete","completedAt":"2026-08-28T08:05:50.893244Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionProducts","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null},{"order":3,"sectionType":"Recommendation","status":"Complete","completedAt":"2026-08-27T08:25:48.480658Z","isEnabled":true,"preCheckArea":"Sourcing","preCheckPageKey":"BusinessProtectionRecommendation","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}],"suitability":{"documentsComplete":false,"pendingDocuments":[{"documentType":"PhotoId","label":"Photo ID","status":"Pending","completedAt":null,"missingForClients":[{"clientId":181,"fullName":"Ayra Ali"}]},{"documentType":"QuoteComparisonReport","label":"Quote Comparison Report","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"ProvidersIllustration","label":"Provider's Illustration","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"Application","label":"Application","status":"Pending","completedAt":null,"missingForClients":[]},{"documentType":"KeyFeatures","label":"Key Features","status":"Pending","completedAt":null,"missingForClients":[]}],"preCheckArea":"Suitability","preCheckPageKey":"SuitabilityReport","outstandingIssueCount":0,"totalIssueCount":0,"highestOutstandingPriority":null}}},"timestamp":"2026-09-29T08:46:03.7013416Z"}
2026-09-29 08:46:03.694 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:e49e9b60118b2373e63a08020fb685e6] HTTP GET /api/v1/business/solution-builder/cases/367/quotes responded 200 in 16.4891 ms
2026-09-29 08:46:03.694 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:1de06e493e74] [T:e49e9b60118b2373e63a08020fb685e6] HTTP GET /api/v1/business/solution-builder/cases/367/quotes 200
Req: [no body] Res: {"success":true,"data":{"caseId":367,"sbClientId":481801,"events":[{"quoteId":138,"eventType":"Like","eventTimeUtc":"2026-08-27T12:30:18.98Z","solutionType":"SingleBenefit","isRecommended":false,"quotes":[{"iPipelineQuoteId":"7b24dc94-3e8e-4f16-bcea-acc8358ea345","productId":5874,"productName":"Royal London Business Menu Plan - No Child CI","providerName":"Royal London","providerId":null,"premium":19.66,"commissionAmount":398.20,"expiryDate":"2026-09-26T01:00:00","quoteDate":"2026-08-27T12:29:44.107","overallUnderwritingDecision":"NotUnderwritten","isRecommended":false,"benefits":[{"benefitKey":"BusinessProtection|First|LifeOrCriticalIllness","benefitType":"BusinessProtection","benefitName":"Business Protection","coverType":"Life or Critical Illness","coverAmount":50000,"livesAssured":"First","benefitBasis":null,"term":null,"toAge":65,"benefitId":"7108e57b-c171-43e2-b63d-d4e71257467e","premium":19.66,"commissionAmount":398.20,"indexation":"Level","totalPermanentDisability":false,"displayName":"Ayra"}]}]},{"quoteId":137,"eventType":"Like","eventTimeUtc":"2026-08-25T13:27:43.903Z","solutionType":"SingleBenefit","isRecommended":true,"quotes":[{"iPipelineQuoteId":"9269ba13-d875-4258-8958-298efeb878e7","productId":6134,"productName":"VitalityLife Optimised Life & Business SIC 2X","providerName":"VitalityLife","providerId":null,"premium":13.58,"commissionAmount":284.80,"expiryDate":"2026-09-24T01:00:00","quoteDate":"2026-08-25T13:27:23.5","overallUnderwritingDecision":"NotUnderwritten","isRecommended":true,"benefits":[{"benefitKey":"BusinessProtection|First|LifeOrCriticalIllness","benefitType":"BusinessProtection","benefitName":"Business Protection","coverType":"Life or Critical Illness","coverAmount":50000,"livesAssured":"First","benefitBasis":null,"term":null,"toAge":65,"benefitId":"099f00ab-3b5e-4849-b707-6953c1df79cc","premium":13.58,"commissionAmount":284.80,"indexation":"Level","totalPermanentDisability":false,"displayName":"Ayra"}]}]}]},"timestamp":"2026-09-29T08:46:03.6937358Z"}
2026-09-29 08:46:03.692 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:88a3d659054b0698d583f5091756096f] HTTP GET /api/v1/business/cases/367/notes/summary responded 200 in 12.0582 ms
2026-09-29 08:46:03.692 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:18fb5a1636bd] [T:88a3d659054b0698d583f5091756096f] HTTP GET /api/v1/business/cases/367/notes/summary 200
Req: [no body] Res: {"success":true,"data":{"notesAdded":0,"notesUnread":0},"timestamp":"2026-09-29T08:46:03.6919163Z"}
2026-09-29 08:46:03.684 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:f821007ddd835971018dd6ca99b26161] HTTP GET /api/v1/business/product-catalog/providers responded 200 in 4.7532 ms
2026-09-29 08:46:03.684 +00:00 [INF] [HTTP] [U:656] [E:anmol.b@wealthmax.co.uk] [C:219fe6587e6c] [T:f821007ddd835971018dd6ca99b26161] 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":140,"name":"Gagan Deep","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-21T10:02:25.279225Z"},{"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":141,"name":"Uinsure","logo":null,"source":"ManualEntry","externalId":null,"isActive":true,"productCount":1,"createdAt":"2026-09-25T08:12:50.262205Z"},{"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":100,"totalElements":21,"totalPages":1,"hasNext":false,"hasPrevious":false,"isFirst":true,"isLast":true}},"timestamp":"2026-09-29T08:46:03.6845479Z"}
2026-09-29 08:45:59.591 +00:00 [INF] [GEN] [U:-] [E:-] [C:-] [T:683a378af3d84a6191558cc7fdcc1e5b] HTTP GET /api/v1/business/my-tenant/branding responded 200 in 6.1542 ms
Errors & Warnings 0