Skip to content

SuccessionPipeline

A SuccessionPipeline is the container for the “Pipelines and Succession” feature: a named succession map, pipeline or watchlist owned by one organisation.

Organisations track people they may want in future roles. A pipeline groups those people, optionally under named roles when its kind is a succession map. The kind distinguishes the three presentations the frontend renders. updated_at doubles as the card’s “last updated” value and is bumped by $touches on both roles and members, so any change inside the pipeline refreshes it.

Pipelines are created and edited from the project succession page through a set of single-action controllers.

  • app/Services/SuccessionPipelineService.php — reads pipelines with their roles and members, and builds the Inertia payload.
  • app/Services/SuccessionPipelineWriter.php — all writes, including member deduplication.
  • app/Http/Controllers/Projects/SuccessionPipeline*Controller.php — store, update and destroy actions.
  • app/Http/Controllers/Projects/ProjectsSuccessionController.php — renders the succession page.
  • app/Services/Voice/Tools/CreateSuccessionPipeline.php — lets the voice agent create a pipeline.
Relation Type Related model
organization belongsTo Organization
roles hasMany SuccessionPipelineRole
members hasMany SuccessionPipelineMember

Display order (created_at then id, ascending) is applied at query time in the service, not on the relation.

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

Column Type Notes
id uuid Primary key
organization_id uuid FK to organizations
kind SuccessionPipelineKind succession-map, pipeline, watch
name string Not unique per organisation, by design
created_at, updated_at datetime updated_at bumped by role and member changes