Shared contact detail source
Purpose
This lifecycle explains whether a contact point is independently maintained, copied, actively supplied by an organization or waiting for review after its source disappears. A work address can look plausible in every case, so staff need its source meaning to decide whether it is current and who should correct it.
The recorded disconnection decision preserves the last known value with an explanation instead of quietly turning source loss into a user-confirmed copy. Our reading is that distinguishing unresolved links from removed sources also prevents an ended employment period from being misread as an organization deleting its address.
Ownership and Authority
Contact editors choose permitted ownership, copying or linking through the contact save. The source-removal transaction alone establishes disconnected provenance. Authorized staff can later keep, relink or remove the value. Dedicated resolution APIs check the still-disconnected state as well as version; the console currently uses a general version-tested collection patch.
The calendar can change whether a saved link resolves without changing its storage mode. Reconciliation can apply an eligible saved default to an empty purpose. No inference operation makes or executes a source choice; readers are shown the provenance needed to interpret the information themselves.
The Lifecycle
States
owned
The contact maintains its own contact-point value. Entry requires this condition: The contact stores independent value fields. Available behavior is Read; edit; link or remove under contact guards.. The displayed value is maintained for this person.
copied
The contact stores an organization snapshot with copy provenance, independent of later source edits. Entry requires this condition: A save keeps a source snapshot and copy provenance. Available behavior is Read; edit independently; change source mode under save validation.. The value does not follow later organizational edits.
linked
The contact references an organization source through an effective affiliation and reads its current value. Entry requires this condition: A saved source reference uses an effective affiliation. Available behavior is Read resolved source values; copy; relink under save guards.. The current organization value supplies the person’s display.
linked unresolved
The saved link has no effective affiliation today, so reads resolve no value until eligibility or the link changes. Entry requires this condition: The saved link’s affiliation is not effective on the workspace day. Available behavior is Inspect its source; change the tie or detail under ordinary guards.. Read resolution supplies no value; the source reference still exists.
disconnected
The source was removed; the contact retains the last known value and disconnection metadata for review. Entry requires this condition: Source removal or organization merge retains its last values and service provenance. Available behavior is Read the warning; keep, relink or remove if the contact is editable.. Verification is required and source, cause and time explain the warning.
removed
The contact no longer stores the detail. Entry requires this condition: The valid contact write deletes this detail row. Available behavior is Inspect its earlier values in authorized contact history.. No live entry is displayed for that row. This row’s lifecycle ends here; a new request or new record is separate work.
Transitions Explained
owned → linked
An authorized editor or default-link settlement starts this change when the following occurs: Link an owned detail or apply a type mapping to an empty purpose. The transition checks this boundary: The saved affiliation is effective, the source belongs to its organization and any echoed value matches after whitespace normalization. The accompanying work is resolve value from the source on reads without rewriting the contact for source edits. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
linked → copied
An authorized contact editor starts this change when the following occurs: Change a live link to a copied detail without an independent value. The transition checks this boundary: Use ordinary contact-save guards. The accompanying work is store the resolved snapshot with organization and copy time. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
linked → linked unresolved
The calendar or an authorized relationship editor starts this change when the following occurs: Pass the affiliation end or change it to a future period. The transition checks this boundary: Calendar eligibility changes without a dedicated detail write. The accompanying work is return no resolved value until the affiliation is effective again. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
linked → disconnected
The source-removal transaction starts this change when the following occurs: Remove the organization source or merge away its organization. The transition checks this boundary: The database removal trigger runs in the same transaction. The accompanying work is retain last known value and source organization; record disconnection time and cause; surface verification required; advance affected contact versions and capture revisions. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
disconnected → owned
An authorized contact editor starts this change when the following occurs: Keep a disconnected value through the dedicated API or console patch. The transition checks this boundary: Dedicated action requires update permission, current version, a still-disconnected row and an editable contact; console patch uses ordinary save checks. The accompanying work is clear disconnection metadata; keep an owned value; advance version and capture revision. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
disconnected → linked
An authorized contact editor starts this change when the following occurs: Relink through the dedicated API or console dialog. The transition checks this boundary: Dedicated checks apply; choose exactly one valid source on an effective affiliation. Console uses general patch validation. The accompanying work is store the new live reference; clear disconnection metadata. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
disconnected → removed
An authorized contact editor starts this change when the following occurs: Remove through the dedicated API or console patch. The transition checks this boundary: Dedicated action validates disconnection and version; console follows ordinary collection patch checks. The accompanying work is delete the contact detail. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
owned → removed
An authorized contact editor starts this change when the following occurs: Leave the detail out of an explicitly saved collection. The transition checks this boundary: Any element lock blocking removal must be released first. The accompanying work is select the earliest eligible nonseasonal address in type order if the preferred address was removed. Contact writes and source-removal disconnections capture contact revisions and advance the owning version. Date-only resolution changes do not create a contact revision because no stored contact value changes.
What Cannot Happen
A client-created disconnected mode or forged disconnection provenance is refused. Only the service records the organization, time and cause of source loss.
A new live link through a future or ended affiliation is refused with contact-information validation. The caller must choose an effective relationship and a source belonging to it.
Source removal does not alter an independent copied snapshot into disconnected information. The copied row remains independent and receives no such transition.
Permissions by State
The state rows reference grants from the CRM authorization model. Read access is distinct from mutation, and history requires the corresponding history and read checks. Administrator and Power User hold administrative record actions; ordinary Standard User grants include applicable read and update operations, while Read Only grants do not authorize edits.
Contact update controls these nested corrections even when initiated from an organization. Archive and locks can still refuse an otherwise authorized change. Calendar interpretation needs no user grant.
Concurrency and Timing
An organization-source removal and all dependent disconnections commit in one database transaction. Each affected contact’s version advances, so an open editor can conflict even though its owner did not initiate the organization change. Failure of disconnection capture rolls back source removal rather than leaving broken live references.
Dedicated recovery compares both the read version and the disconnected state, preventing a stale action from resolving an already-settled row. The console’s general patch has a different validation boundary. Calendar expiry alone changes read resolution without rewriting contact values, stamps or history.
Invariants
Our reading is that source loss and an ineffective affiliation must remain distinguishable. An ended tie can stop a link from resolving without deleting the organization’s detail or creating a disconnected snapshot. Actual source removal retains the last known value and service provenance. Keeping it later establishes owned information; relinking selects a new valid source. Version and still-disconnected checks protect dedicated recovery from silently replacing another editor’s already completed resolution.