Skip to main content

FDM Profiles

Overview​

FDM (Flight Data Monitoring) profiles define the safety monitoring triggers that are evaluated against flight telemetry data after each completed flight. When a trigger condition is met during the flight, it generates an event that appears on the flight detail page and may affect the flight's approval status.

Each profile contains an ordered set of triggers, and profiles are assigned to aircraft at the fleet, subfleet, or individual aircraft level. This allows different aircraft types to have tailored monitoring parameters -- for example, stricter landing rate thresholds for smaller aircraft or specific flap speed limits for each airframe.

Backoffice path: backoffice/fdm-profiles

Available to roles: System Administrator, Administrator


Profile Structure​

A profile record contains the following fields:

FieldDescription
NameA descriptive name for the profile (e.g., "Boeing 737 Standard FDM")
DescriptionOptional explanation of the profile's purpose and scope
ActiveToggle to enable or disable the entire profile

Profile Assignment​

Profiles are assigned to aircraft through a many-to-many relationship with the following entity levels:

LevelDescription
FleetApplies the profile to all aircraft in the fleet
SubFleetApplies the profile to all aircraft in the subfleet
AircraftApplies the profile to a single aircraft registration

A flight is analysed by a single profile: the most specific active profile assigned to its aircraft. Inactive profiles are skipped, so switching a profile off hands its aircraft to the next level down.

Resolution Priority​

To find the profile for a flight, the system checks each level in order and uses the first active profile it finds:

  1. Aircraft -- Profiles assigned directly to the specific aircraft registration.
  2. SubFleet -- Profiles assigned to the aircraft's subfleet.
  3. Fleet -- Profiles assigned to the aircraft's fleet.

Keep one active profile per level. If a level has several, which one applies is not defined.

If no active profile is found at any level, FDM analysis is skipped for that flight and the flight log says why. The flight then goes through the approval flow without any FDM events.


Triggers​

Each profile contains ordered triggers that define individual monitoring rules. Triggers are evaluated against the raw ACARS telemetry data recorded during the flight.

Evaluation Window​

Triggers are only evaluated from the moment the aircraft first moves -- pushback -- through the end of the flight. Nothing is evaluated while the aircraft is stopped at the departure gate, so a bad simulator spawn there (engines already running, lights off, an odd attitude) cannot generate FDM events. The window stays open for the rest of the flight, including while the aircraft is stationary at the arrival gate, so checks like engine cool-down still work normally.

Trigger Fields​

FieldDescription
NameDescriptive name for the trigger (e.g., "Excessive Landing Rate")
TemplateThe pre-defined trigger template type (see below)
FieldThe telemetry data field to monitor (e.g., v_speed, spd_ias, gear_down)
OperatorThe comparison operator used for evaluation
ValueThe threshold value or target value for comparison
ConditionsAdditional conditions that must be true for the trigger to fire
Event TypeThe severity of the event generated: Information, Warning, or Violation
DescriptionThe event text shown on the flight detail when the trigger fires. See Event Text for what it should say and the placeholders it can use
LabelShort label displayed on the FDM event badge
Duration SecondsHow long (in seconds) the condition must persist before the trigger fires. Prevents momentary spikes from generating events
Cooldown SecondsMinimum time (in seconds) between consecutive fires of the same trigger during a single flight. Prevents repeated events from the same ongoing condition
PointsPoint value awarded or deducted when the trigger fires. Positive values reward good performance; negative values penalize deviations
ActiveToggle to enable or disable the individual trigger without removing it from the profile

Operators​

OperatorDescriptionExample
>Greater thanLanding rate > -500 fpm
<Less thanAirspeed < 250 below FL100
=Equal toGear state = retracted
!=Not equal toEngine state != off
betweenWithin a range (inclusive)Altitude between 0 and 1000
change_toDetects a state transitionFlaps change_to retracted
duration_ofCondition sustained for a periodStall warning duration_of 3 seconds

Duration and Cooldown​

The Duration Seconds field prevents transient spikes from generating events. For example, a momentary airspeed exceedance during turbulence may not warrant a violation if it lasts less than 2 seconds. Setting duration_seconds: 2 ensures the condition must persist for at least 2 seconds before the trigger fires.

The Cooldown Seconds field prevents the same trigger from firing repeatedly during a sustained condition. For example, if an overspeed condition lasts 30 seconds, a cooldown of 10 seconds ensures the trigger fires at most 3 times rather than continuously.

Event Text​

The Description is what the pilot and the reviewer read when the trigger fires, so it always says three things:

  1. What went wrong: Landing weight exceeds MLW.
  2. What was measured: Landing weight (65000 kg).
  3. What it was compared against, under which rule, and by how much it was off: exceeds MLW (64300 kg) by 700 kg.

Put together: Landing weight (65000 kg) exceeds MLW (64300 kg) by 700 kg. Every template generates its text in this form, for example Airspeed (245 kt) exceeds the flap 20% speed limit (230 kt) by 15 kt or Engine 1 shut down 60s after landing, 120s short of the 180s minimum cool-down. A check with no number behind it still names the rule: Lifted off with landing lights off (landing lights must be on for takeoff). A bracket check quotes the bracket: Landing rate (-350 fpm) is within the Good range (-200 to -400 fpm).

The text is filled in from the sample the trigger fires on. For a > or < trigger that is the most extreme sample of the exceedance, so the event reports how far past the limit the flight actually got. Placeholders in curly braces are replaced:

PlaceholderValue
{spd_ias}, {alt_agl}, {v_speed}, ...Any telemetry field of the sample
{_landing_weight}, {_flare_duration}, {_eng1_run_seconds}, ...Any computed field (prefixed with an underscore)
{_measured}The value the trigger compared, after its field modifier: att_bank (abs) gives the unsigned bank angle
{_limit}The configured limit, with MTOW, MLW and MZFW resolved from the aircraft's load profile. Speed and weight limits show the configured value, not the tolerance-adjusted one
{_delta}How far the measured value is past the limit, always positive
{mtow}, {mlw}, {oew}, ...A load profile weight
{120 - _eng1_run_seconds}, {_flare_duration - 14}A sum or difference of two of the above, or of a number: the gap when the rule lives in a condition rather than in the trigger's own limit

Numbers are shown to one decimal. A placeholder nothing provides is left as written.

When you write your own text in the advanced editor, follow the same form, and quote your configured limit in it: the engine knows the value it compares against, not the wording of your rule.

Speed Tolerance​

Speed thresholds carry a 2% tolerance in the pilot's favor: a speed has to be more than 2% past a threshold before it counts as past it. A 230 kt flap limit is only exceeded above 234.6 kt, and a 120 kt minimum speed is only broken below 117.6 kt. Pilots fly right at their limits and the simulator's airspeed wanders a fraction of a knot either side, so without the tolerance a flap speed held at its limit was flagged as a 230.2 kt exceedance.

The tolerance applies to the aircraft speed fields spd_ias, spd_tas and spd_gs — whether a trigger monitors them or uses them in a condition — and to the gate speed of the STABILIZED_APPROACH check. Event texts still quote the configured limit. Enter published limits as they are; the tolerance is already built in. Vertical speed, wind and every other field are compared exactly as configured, apart from the weight margin below.

Weight Margin​

The takeoff and landing weights carry a 1% margin over the structural limits: a flight only counts as overweight once it is more than 1% above MTOW or MLW. An 80000 kg MTOW is only exceeded above 80800 kg, and a 64500 kg MLW above 65145 kg. Simulator weights drift with fuel burn and payload rounding, so a flight dispatched right at its limit was being flagged for a few kilos over.

The margin applies to the computed fields _takeoff_weight and _landing_weight, so it covers the OVERWEIGHT_TAKEOFF and OVERWEIGHT_LANDING templates and any custom trigger built on those fields, whatever limit it names. Event texts still quote the configured limit and the full gap to it: a 65200 kg landing against a 64500 kg MLW reads exceeds MLW (64500 kg) by 700 kg. MZFW and the PAYLOAD_VARIANCE check are not affected.


Pre-Defined Templates​

FDM profiles use pre-defined templates that provide standard monitoring configurations. Each template corresponds to a common flight safety parameter. Templates define the default field, operator, and conditions, which can be customized per trigger.

TemplateDescription
FLAP_SPEED_LIMITMonitors airspeed against maximum flap extension speeds. A 0% row limits the clean (fully retracted) configuration, where the only limit is VMO/MMO — jets exceed 250 kt clean on every climb and cruise, so leave it out unless you set it at VMO
GEAR_SPEED_LIMITMonitors airspeed against maximum landing gear operating speed
LANDING_RATEEvaluates the vertical speed at touchdown
LANDING_G_FORCEEvaluates the G-force experienced at touchdown
TOUCHDOWN_CENTRELINE_OFFSETEvaluates the absolute lateral distance from the runway centreline at touchdown. Needs a reported arrival runway and a seeded runway record for it (see Landing Performance Report)
RUNWAY_DISTANCE_USEDEvaluates the percentage of the runway's landing length used during the landing roll. Same requirements as TOUCHDOWN_CENTRELINE_OFFSET
TAKEOFF_RUNWAY_USED_PERCENTEvaluates the percentage of the runway's takeoff length used before liftoff. Needs a reported departure runway and a seeded runway record for it (see Takeoff Performance Report)
ENGINE_WARMUPChecks that engines were allowed to warm up before high-power application
ENGINE_COOLDOWNChecks that engines were allowed to cool down before shutdown
STALL_WARNINGDetects activation of the stall warning system
OVERSPEED_WARNINGDetects activation of the overspeed warning system
OVERWEIGHT_TAKEOFFDetects takeoff more than 1% above the maximum takeoff weight
OVERWEIGHT_LANDINGDetects landing more than 1% above the maximum landing weight. Also grounds the aircraft for an inspection and cancels its bookings when Overweight Landing Auto-Grounding is enabled
PAYLOAD_VARIANCECompares the zero fuel weight at takeoff with the planned one (the load profile's OEW plus the flight's generated payload). Needs a load profile with an OEW and a generated payload
LOW_ALT_BANKMonitors bank angle at low altitude
TAILSTRIKEMonitors pitch angle while on the ground (rotation/derotation)
LOW_ALT_VSMonitors vertical speed at low altitude
REFUELING_ENGINES_ONDetects refueling while engines are running
SIM_RATEDetects use of accelerated simulation rate
SIM_PAUSEDDetects pausing of the simulator during flight
SIM_SLEWINGDetects use of simulator slew mode
TAKEOFF_ACCEL_HEIGHTMonitors acceleration altitude after takeoff
STABILIZED_APPROACHEvaluates whether the approach was stabilized at the required altitude
ORIGIN_PROXIMITYChecks that the flight departed from the planned origin
DESTINATION_PROXIMITYChecks that the flight arrived at the planned destination
TAILWIND_APPROACHMonitors tailwind component during final approach (airborne only; never while on the ground)
CROSSWIND_APPROACHMonitors crosswind component during final approach (airborne only; never while on the ground)

There are 32 pre-defined templates in total. The templates listed above represent the most commonly used ones. Additional templates are available in the template selector when creating or editing triggers.

A flap speed limit profile built before 2026-09-28 may still carry a 0% row from an older version of the template, even though the template no longer adds one. Open the profile's Flap Speed Limit trigger in the trigger editor, look for a row with Flap Position set to 0%, and remove it — the trigger editor flags that row with a warning.


Event Types and Points​

When a trigger fires, it generates an FDM event with one of three severity levels:

Event TypeImpactTypical Use
InformationAdvisory only. Does not affect flight approvalRewarding smooth landings, noting good practices
WarningMay hold the flight for staff review depending on auto-approval settingsSpeed exceedances, unstabilized approaches, minor deviations
ViolationAlways holds the flight for staff reviewStall warnings, overspeed, slewing, overweight operations

Points System​

Each trigger has a configurable points value:

  • Positive points reward good performance. For example, a smooth landing (vertical speed between -100 and -200 fpm) could award +5 points.
  • Negative points penalize deviations. For example, exceeding the flap speed limit could deduct -10 points.

Points are awarded or deducted each time the trigger fires during a flight. The total points from all FDM events are summed and displayed on the flight detail page. Points contribute to the pilot's overall performance score.


Managing Profiles​

Creating a Profile​

  1. Navigate to backoffice/fdm-profiles and click Create Profile.
  2. Enter the Name and optional Description.
  3. Toggle Active to enable the profile.
  4. Save the profile, then assign it to fleets, subfleets, or aircraft from the profile detail page.

Adding Triggers​

From the profile detail page:

  1. Click Add Trigger.
  2. Select a Template from the pre-defined list. This pre-fills the field, operator, and default values.
  3. Customize the Value, Event Type, Points, Duration Seconds, and Cooldown Seconds as needed.
  4. Set the Active toggle.
  5. Save the trigger.

Triggers are ordered within the profile and can be reordered by dragging. The order determines the sequence of evaluation during FDM analysis.

Duplicating a Profile​

To duplicate an existing profile with all its triggers and assignments:

  1. Navigate to backoffice/fdm-profiles.
  2. Click Options > Duplicate on the profile you want to copy.
  3. The system creates a new profile named "Profile Name (Copy)" with all triggers and aircraft assignments cloned.
  4. You are redirected to the edit page where you can rename the profile and adjust triggers as needed.

This is useful when creating similar profiles for different aircraft families — for example, cloning a "Boeing 737 Standard FDM" to create a "Boeing 737-800 Specific FDM" with minor threshold adjustments.

Best Practices​

  • Start with a base profile for each major aircraft family and assign it at the fleet level.
  • Use subfleet or aircraft-level profiles to override specific triggers for variants that have different performance characteristics.
  • Use Information events with positive points to incentivize good piloting practices, not just penalize mistakes.
  • Set appropriate duration_seconds values to avoid false positives from momentary telemetry spikes.
  • Use cooldown_seconds to prevent a single sustained issue from generating excessive point deductions.

Troubleshooting​

False "Flap speed exceeded" events with the flaps retracted​

If pilots see "Flap speed exceeded ... at flap 0%" events on normal climbs, cruise, or descents — with the flaps genuinely retracted — the profile's Flap Speed Limit trigger has a leftover row for 0% flaps. Flaps fully retracted is the clean wing, whose only speed limit is VMO/MMO, so a 0% row in this trigger fires on every flight.

To fix it: open the affected FDM profile, go to the Flap Speed Limit trigger in the trigger editor, and remove the row where Flap Position is 0%. The editor marks that row with a warning so it's easy to find.