KamoCRM

The organization's do-not-contact list, per channel

Featurekamo-shared-library
Shipped
October 15, 2026 at 4:36 AM UTC
Author
Kamo
Commit
c313d48

One company-wide list per organization (owner 2026-10-15), scoped per channel: a CALL entry blocks calls only, SMS texts only, EMAIL email only. Package com.kamo.z.shared.comms.dnc: DO_NOT_CONTACT (unique ORG_ID, CHANNEL, ADDRESS), the append-only DO_NOT_CONTACT_EVENT audit trail and DO_NOT_CONTACT_SETTINGS (per-org call mode WARN | BLOCK, default WARN). DoNotContactList (plain class; each service declares the bean) is the one reader and writer: isBlocked(orgId, channel, address) / find / filterBlocked for every contact path, add (idempotent, first date kept), remove and removeById (a reason of 3+ characters is required, and the REMOVED event keeps it), search, history, activity and the call mode. Addresses are E.164 for CALL and SMS (PhoneE164, then E164's NANP reading) and lower-cased for EMAIL; an unreadable address is refused. DDL: voipservice **************** (applied 2026-10-15 04:35Z). Tests: DoNotContactListTest, ****************

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing