Skip to content

Movement

Option required

Movements are only available if the MOVEMENT option is enabled on the project.

Definition

A Movement is a timestamped record of any entry into or exit from the project site. It is the core operational log of the application.

Project
└── Movement

Immutability

A movement cannot be modified in any way — there is no edit feature. If an error occurs, the only options are:

  • Reverse the movement for the extra participants (create a compensating movement).
  • Soft-delete the movement with Hide movement, then create a new correct one.

If a movement could be edited after the fact, it would become useless as an operational log because it could have been altered by a malicious individual.

E.g. Someone who made a hasty movement withdraws from it afterward and can no longer be traced.

See also the Editability policy for Operations entities.

WARNING

A movement cannot be created with a datetime in the future. All recorded movements must have a datetime less than or equal to the current time.

Main attributes

AttributeDescription
TimestampThe movement moment
ContentsOne or more content entries (see the table below)
ReasonThe movement reason (see the Reason section for allowed values)
ActivityIf the movement is linked to an activity (and option active)
DirectionThe movement direction with the project location as reference
AttributeDescription
ParticipantConcerned participant
VehicleIf the participant drives a vehicle
PoolIf the participant is added through a group

Direction

Every movement has a direction:

TypeMeaning
INA person enters the project site
OUTA person leaves the project site

Content

Participant

A movement can include one or more people. Two kinds of people can be recorded in a movement:

KindDescription
REGISTEREDA participant pre-registered in the project
GUESTA light, one-off entry with a first name, last name, and birthdate — not registered in the project

WARNING

A single movement cannot contain both REGISTERED and GUEST participants. The movement reason is not the same for the two kinds of people (see the reason section).

Guest lifecycle

A GUEST participant is limited to exactly two movements: one IN movement when they arrive and one OUT movement when they leave. No further movement can be recorded for a guest once they have gone out.

When a participant is added to a movement, the participant’s details are captured. This snapshot is taken at movement time and is preserved independently of any subsequent rename or deletion of the participant.

Eligible participant status (at the movement timestamp):

  • Availability status: AVAILABLE or NOT_AVAILABLE_YET
  • Presence status: IN, OUT, or not yet present

Group

When participants are added to a movement via a group, the group name is captured as a pool name — a labelled grouping within the movement. This snapshot is taken at movement time and is preserved independently of any subsequent rename or deletion of the group. It serves as a display label to identify which group a set of participants belonged to when the movement was recorded.

INFO

Adding participants through a group is just a way to save time. When you select a group of participants to add, you can remove individual participants of the group from the movement (but not the group itself).

Vehicle

When a vehicle is attached to a movement, the driver is identified as one of the participants of the movement (flagged as the driver). There is no separate driver attribute on the movement — the driver must be part of the movement's participant list.

To drive a vehicle, the participant must be major (at the movement timestamp).

Eligible vehicle status (at the movement timestamp):

  • Availability status: AVAILABLE or NOT_AVAILABLE_YET
  • Presence status: IN, OUT, or not yet present

Reason

A reason is mandatory when the movement direction is considered non-natural for that type of person:

DirectionParticipant typeReason required?
OUTRegistered participantYes
INRegistered participantNo
INGuestYes
OUTGuestNo

Reasons for a REGISTERED participant going OUT

ReasonDescription
An activity IDThe participant is leaving to take part in specific activity
SHOPPINGThe participant is leaving for a shopping errand
MEDICALThe participant is leaving for a medical appointment
DEFINITIVE_DEPARTUREThe participant is leaving the project for good
OTHERAny other reason

Reasons for a GUEST coming IN

ReasonDescription
EMERGENCYThe guest is entering in an emergency situation
LOGISTICSThe guest is entering for a logistical purpose
PARTNER_ANIMATIONThe guest is an external facilitator or partner
VISITThe guest is a visitor

Status

A movement does not have an explicit status field. Its state is derived from:

SituationImplied state
Have been soft deletedHIDDEN
Have not been soft deletedVISIBLE

Impact other objects status

Participant presence status

Each participant’s current presence status is derived at runtime from their movement history.

StatusCondition
NO_MORE_HEREThe GUEST participant’s last recorded movement is an OUT
NO_MORE_HEREThe REGISTERED participant’s last recorded movement is an OUT with reason DEFINITIVE_DEPARTURE
INThe participant’s last recorded movement is an IN
OUTThe participant’s last recorded movement is an OUT

Vehicle presence status

Each vehicle’s current presence status is derived at runtime from their movement history and their resolved departure date (see Attendance fallback).

StatusCondition
INThe vehicle’s last recorded movement is an IN
OUTThe vehicle’s last recorded movement is an OUT

Relationships

Related objectRelationship
ParticipantA movement contains one or more participants
GroupA movement contains zero or more groups
VehicleA movement contains zero or more vehicles
ActivityA movement contains zero or one activity
CommunicationA movement can have zero or more communications (only if the movement includes an activity, and if option enabled)