Skip to content

SuccessionPipelineMember

A SuccessionPipelineMember is one candidate on a pipeline, stored as a snapshot of the person rather than a live reference.

Members come from two places: a FocusIndividual profiled on a project, or a leader listed in a project’s groupings data who has no record of their own. Either way the identifying fields are copied onto the row at add time. The snapshot columns are the render source of truth, so a member survives a groupings re-import or the deletion of the project they came from. source_key is the deduplication identity, built by keyForFocusIndividual() or keyForLeader() on the model — the only place that rule lives.

Members are added, moved between timeframes and removed from the succession page.

  • app/Services/SuccessionPipelineWriter.php — all member writes, using source_key to avoid duplicates.
  • app/Http/Controllers/Projects/SuccessionPipelineMemberStoreController.php — adds a member.
  • app/Http/Controllers/Projects/SuccessionPipelineMemberUpdateController.php — changes timeframe or role.
  • app/Http/Controllers/Projects/SuccessionPipelineMemberDestroyController.php — removes a member.
  • app/Services/SuccessionPipelineService.php — groups members by timeframe for the payload.
Relation Type Related model
pipeline belongsTo SuccessionPipeline
role belongsTo SuccessionPipelineRole
focusIndividual belongsTo FocusIndividual
sourceProject belongsTo Project
addedBy belongsTo User

$touches = ['pipeline'] means saving a member updates the pipeline’s updated_at.

Table succession_pipeline_members. Primary key is a UUID (HasUuids).

Column Type Notes
id uuid Primary key
succession_pipeline_id uuid FK to succession_pipelines
succession_pipeline_role_id uuid Nullable, FK to roles
timeframe SuccessionTimeframe ready, within_year, longer_term
source_type SuccessionMemberSource focus_individual, groupings_leader
source_key string Dedup identity, fi: or gl: prefixed
focus_individual_id uuid Nullable provenance FK
source_project_id uuid Nullable provenance FK
added_by_user_id uuid Nullable, FK to users
name string Snapshotted display name
source_label string Nullable, snapshotted credit label
source_snapshot array Nullable, JSON cast
created_at, updated_at datetime Timestamps