Session Objective
Add a Client Birthdays section under Attorney Hub Client Service so attorney hubs can see current clients and resolved settlement clients with nearby birthdays, then open a prebuilt birthday text for RingCentral review.
What Was Accomplished
- Added shared Salesforce Apex service
AttorneyHubBirthdayService.
- Updated Payton Client Service controller to use the shared birthday rows instead of the prior open-only birthday query.
- Added local Nick Client Service controller and test source, then wired Nick to the same birthday service.
- Updated Nick and Payton Client Service LWCs with birthday cards that show client, Matter, birthday timing, current or resolved settlement label, phone, message preview, copy text, open Matter, and open RingCentral draft actions.
- Built the draft message from client first name, attorney first name, and case manager first name using Sam's requested text.
- Used the existing Salesforce RingCentral app URL pattern to open a compose draft, not a direct send.
- Added guardrails so the draft button is disabled for SMS STOP, birthday text opt-out, deceased clients, missing phone, missing attorney first name, or missing case manager first name.
- Updated local documentation in
docs/litify-environment-diary.md and OPS_LEDGER.md.
Validation Evidence
LITIFY_ORG was connected and live schema was checked.
- Static checks passed:
git diff --check, LWC node --check, and retired Risk Radar text scan.
- First check-only validation
0AfUV000001YOvN0AW failed because comma-separated test syntax caused zero tests to run. Components had no errors.
- Final check-only validation
0AfUV000001YOwz0AG succeeded with 9 components and 2 tests.
- Passing tests:
AttorneyHubNickClientServiceCtrlTest.getClientServiceReturnsExpectedShape and AttorneyHubPaytonClientServiceCtrlTest.getClientServiceReturnsExpectedShape.
Surface Status
Staged locally and Salesforce check-only validated. No live Salesforce metadata deploy was performed. No client SMS was sent.
Important Context