Maintain reliable contact points
Purpose
Staff need contact points whose purpose and preferred use are clear, rather than several indistinguishable strings. This capability organizes e-mail addresses, phone numbers, and addresses on people and organizations, validates their supported forms, and selects a mailing address without confusing a seasonal residence with the regular preferred address.
How It Works
A contact saves ordered e-mail addresses, with the first serving as primary. Rhythm canonicalizes their values and enforces the primary-address constraint for the applicable contact statuses. Secondary slots are not substitutes for that uniqueness boundary, and a status change can expose a conflict even without editing the address itself.
Addresses and phones use workspace classifications, with a single entry for each type and a single preferred choice. Type order supplies the default preference when needed. Supported US phone and geographic input is normalized; other phone forms retain their entered representation. A contact cannot newly acquire an organization-only type, although a previously held entry can remain after administrators narrow its applicability.
Seasonal addresses describe recurring month-day windows, including windows spanning the new year. They cannot overlap and remain separate from regular preference. Mailing selection uses the workspace day and explicit seasonal-use choice. A correction retains the address or phone element's identity; a real replacement removes and adds an element instead.
Example
A retired member has a preferred home address and a winter address from December through March. Staff mark seasonal use. In January the mailing-address read selects the winter location; outside that season it selects the regular home address. A coordinator corrects the winter street line using the same address identity, so the correction is not recorded as removal of one residence and addition of another.
For Daniel Ruiz, the association records the winter window as December 1 through March 31 each year, not as a stay in one named year. A March 31 mailing selection still uses the seasonal destination when seasonal use is marked; April 1 uses the regular preferred home. Adding a second seasonal destination that begins March 31 is refused because the windows share that day. The coordinator corrects the second boundary before saving. She also reads Daniel's ordered e-mails and preferred phone independently: neither the winter address nor the mailing-use choice changes which stored e-mail is primary or which phone is preferred.
Why It Works This Way
Our reading is that one entry per type and one preferred choice keep downstream selection unambiguous. Catalogue order supplies a repeatable fallback instead of whichever row a database happens to return. Canonical primary e-mail values protect the uniqueness check from spelling and case differences, while status-sensitive release permits an address to move without deleting historical people.
Seasonal periods recur annually because the operational question is where to mail today, not whether an address belongs to one particular year. Nonoverlap avoids competing seasonal answers, and explicit use avoids assuming every stored seasonal address is currently wanted. Preserving held types after applicability changes keeps a catalogue edit from making unrelated record corrections impossible. Stable element identities preserve the distinction between correcting information and replacing its source.
Relationships
Classification Types and CRM Settings supplies address and phone type order and applicability. Save corrections without overwriting another change owns aggregate mutation and element identity behavior. Share organization contact points with affiliated people adds source interpretation to addresses and phones. Communication choices are stored alongside these values but their downstream application belongs to the sender's contract.