Completed the selected A-D path for attorney hub birthday outreach.
Shipped live in LITIFY_ORG:
AttorneyHubBirthdayService.birthdayRows(attorneyUserId, Date.today(), 60) so duplicate suppression, current-plus-resolved settlement inclusion, minor/deceased/opt-out/no-SMS-history safeguards, SMS draft generation, and email fallback logic stay centralized.Deployment evidence:
0AfUV000001YkPd0AK, 18 components, 6 tests, 0 failures, no coverage warnings.0AfUV000001YkRF0A0, 18 components, 6 tests, 0 failures, no coverage warnings.044c068 on branch agent/attorney-hub-birthdays-2026-06-09.QA evidence:
git diff --check, node --check across all eight Client Service LWC JS files, and no Risk Radar naming in touched Client Service classes/LWCs.SAIL_SMS_Message__c records were created today by this work. Buttons create drafts only, no automatic send.Refresh numbers was clicked, then rendered birthday cards correctly. Payton showed email fallback rows with SMS disabled for no prior two-way SMS history. Austin showed a mix of disabled SMS with email fallback and one enabled RingCentral draft row where prior SMS history exists.Deceased-flag review:
output/attorney-hub-birthday-deploy-2026-06-09/account-deceased-checkbox-true-without-date-review.json and live Salesforce counts.litify_pm__lit_Is_Deceased__c = true and blank Date_of_Death__c.