Skip to main content

Personnel Management

The Personnel module manages department members, their roles, certifications, and access. It is handled by the PersonnelController.

Personnel List

Authorization: Personnel_View policy

The main personnel index displays all department members with:

  • Full name and profile information
  • Current action status (responding, on-scene, etc.)
  • Current staffing level (available, unavailable, etc.)
  • Group/station assignment
  • Personnel roles
  • Admin/disabled/hidden status

Visibility Controls

The personnel list respects the authorization visibility matrix:

  • Users only see personnel they have permission to view
  • PII (email addresses) visibility is controlled by CanViewPII() check
  • Personnel marked as hidden are not shown to non-admin users

Sorting

Personnel can be sorted by the department's configured sort order:

  • Default — System default
  • First Name — Alphabetical by first name
  • Last Name — Alphabetical by last name
  • Group — Organized by group/station

Group Tree Filtering

A sidebar tree view allows filtering personnel by group/station.

Adding Personnel

Authorization: Personnel_Create policy + subscription limit check

Prerequisites

  • Department must not have reached its subscription plan's personnel limit (CanUserAddNewUser)
  • Group administrators can only add users to their own group (when CanGroupAdminsAddUsers is enabled)

Required Fields

FieldRequiredDescription
First NameYesUser's first name
Last NameYesUser's last name
EmailYesMust be unique across the system
UsernameYesLogin username
PasswordYesMust meet strength requirements

Optional Fields

FieldDescription
Mobile NumberSMS contact (UK carrier rules apply)
Mobile CarrierRequired for text messaging
GroupStation/group assignment
RolesPersonnel role assignments

Creation Process

  1. Validates email uniqueness across the system
  2. Creates an IdentityUser account
  3. Assigns user to the department
  4. Sets group membership (if specified)
  5. Saves user profile
  6. Assigns personnel roles
  7. Optionally sends a welcome/creation notification email
  8. Fires an AuditEvent

Viewing Personnel

Authorization: Personnel_View policy + CanUserViewUser runtime check

The view shows:

  • User profile details
  • Group assignment
  • All assigned roles
  • Department member state (admin, disabled, hidden)
  • Last known user state (staffing level)
  • Last action log (current status)

Deleting Personnel

Authorization: Personnel_Delete policy + CanUserRemoveUser runtime check

  • Group administrators can only remove users from their group (when CanGroupAdminsRemoveUsers is enabled)
  • Uses IDeleteService.DeleteUserAsync for proper cleanup

Personnel Roles

Viewing Roles

Authorization: Role_View policy

Lists all personnel roles defined for the department.

Creating Roles

Authorization: Role_Create policy

Create a role with:

  • Role name
  • Initial member assignments from form selection

Editing Roles

Authorization: Role_Update policy + CanUserEditRole runtime check

Modify role name and member assignments.

Deleting Roles

Authorization: Role_Delete policy + CanUserEditRole runtime check

Remove a role from the department.

Data Endpoints

Personnel Grid Data

EndpointParametersPurpose
GetPersonnelForCallGridcallIdPersonnel with ETA to call location
GetPersonnelForGridWithFilterfilterSelfBasic personnel list (optionally excluding self)
GetPersonnelListFull personnel list with admin/disabled/hidden state
GetPersonnelListPagedperPage, pagePaginated personnel list

ETA Calculation

When displaying personnel for a call, the system calculates Estimated Time of Arrival:

  1. Gets the user's last known GPS location
  2. Gets the call's GPS coordinates
  3. Uses IGeoService.GetEtaInSecondsAsync to calculate travel time
  4. Displays ETA alongside personnel information

Role Data

EndpointPurpose
GetRolesAll department roles
GetCertificationsAll certification types
GetRolesForUserRoles assigned to a specific user

Interactions with Other Modules

ModuleInteraction
DashboardPersonnel status displayed on main dashboard
DispatchPersonnel dispatched to calls
GroupsPersonnel belong to groups/stations
ShiftsPersonnel sign up for shifts
Custom StatusesCustom status levels shown for personnel
MappingPersonnel location shown on maps (permission-controlled)
ReportsPersonnel data used in roster and staffing reports
TrainingsPersonnel assigned to trainings
ProfileCertifications and schedules managed per person
SecurityVisibility matrix controls who can see whom