SwapAssignment ends the live assignment (status ended, ended_at, ended_reason) and creates a new pending assignment for the incoming crew. A unique partial index guarantees only one pending or active assignment exists per project at a time.
Also called: reassign the crew · took the crew off the job · crew handoff · assignment history
- 1getCurrentAssignment finds the single pending-or-active row.
- 2The old row is closed with a mandatory reason before the new one is created.
- 3getAssignmentHistory returns the whole chain newest first.
- 4The incoming crew lead must sign the same agreement, as clause 5 of the default agreement requires.
Taking a job off one crew and handing it to another used to erase the fact that the first crew had ever held it, along with the agreement they signed. A swap ends the outgoing assignment and opens a new one for the incoming crew, whose lead must sign the same agreement before taking over, and a job can only ever have one crew on the hook at a time. The old assignment stays on the record with its signature intact, so the history of who held the job and when reads back in order.
- Reassignments overwriting the previous record.
- Two crews simultaneously assigned to one project.
- Handoffs with no signed acceptance from the incoming crew.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →