StaticinstanceThe process service: the shared database and the customer notification preferences.
Who to email about a self-serve application: every ACTIVE member of its workspace, CFX staff's internal roles aside. The workspace may have no customer yet, and no preference covers these emails.
A customer's invoice and receipt recipients: the workspace's ACTIVE Owner and Admin members, then its billing addresses, deduped case-insensitively. Not gated by notification preferences: nobody opts out of a bill.
Resolve recipients for a notification event, in two statements whatever the roster's size.
the notification's id: the deposit / withdrawal /
transfer / instrument / identity id its "*.created" activity recorded
name + email of everyone who should receive this notification
Resolve who to text for a notification event: the customer's ACTIVE
members matching the SMS userIds / userGroups, at their profile phone,
in one roster statement. No creator rule and no member-level preferences.
one recipient per phone, and how many nominated members have none
Recipient-resolution core for the event-driven email sender. The email-notification-handler lambda resolves who should be emailed through getRecipients and delivers through its own pipeline.
Recipients are the customer-configured
emailAddresses, plus the customer's ACTIVE dashboard members matching the configureduserIds/userGroups(their DB role name) or the object's dashboard "creator", each gated by the member's own email preferences; and CFX staff's hiddeninternalUserIds, admin users still holdinguser-shadow:r, gated by the company's toggle.