Contextual variants of a part
Contextual variants (effectivity overrides) let you override one or more attributes of a PartNumber depending on its usage context: aircraft family, variant, product version, company, business unit, or specific aircraft. The same catalogue part can behave differently depending on the environment it is installed in, without duplicating the master record.
Why it is useful
The same turbo bolt referenced as PT0714A00 is civil by default. Inside the Rafale
family it is classified military (stricter export controls). On the Rafale Marine variant
(export marine), it flips to dual use. Rather than cloning three PartNumber records, you
declare two contextual variants on the original PartNumber and resolution adapts automatically.
The resolution cascade
For each overridable attribute, Envergure walks the scopes from the most specific to the least specific and picks the first non-null value it finds:
Evaluation order for each attribute
- Aircraft
Override on a specific aircraft (local derogation case).
- Business UnitOverride for a BU of an operating company.
- CompanyOverride for an operator’s whole fleet.
- Product versionOverride on a specific version of a variant.
- Product variantOverride on a variant (e.g. Rafale M).
- Product familyOverride on the whole family (e.g. Rafale).
- Native PartNumber value
No override applies — the value carried by the part record is used.
Each attribute is resolved independently. A family-level variant may override controlClass
while repairable keeps coming from the part record.
When to use it (and when not to)
- Contextual variant — when an attribute changes depending on the usage context while the hardware PN stays the same. Typical case: export classification differs between civil and defence.
- AEP variant — when the aircraft structure itself changes (different slots, different modules). Not the topic here.
- Derogation — when a non-standard PN is temporarily accepted in place of the PN expected by the CA. Derogation acts on the AEP/CA, not on the PartNumber itself.
Overridable attributes
An override may redefine any subset of:
- Control class (
controlClass) —civil,dual_use,military. - Repairable (
repairable) — yes / no. - CSI (
csi) along with its justification (csiReason) — the pair is enforced to be consistent (non-empty justification whencsi = true, absent whencsi = false). - Export controls (
exportControls) — complete replacement of the list carried by the PN. Empty list = “no export control on this scope”. Up to 10 regimes per override.
Any attribute left empty in the override keeps following the cascade and overrides nothing.
A free-text Notes field (up to 2,000 characters) can be added to document why the variant was created. This field is purely informational and does not participate in the resolution cascade.
Create a contextual variant
Creating a contextual variant
- Open the PartNumber admin sheet
From Admin → Part Numbers, open the part sheet then the “Contextual variants” tab.
- Start creation
Click “Add a variant”. Pick the scope type (Family, Variant, Version, Company, Business Unit, Aircraft), then the target entity through the searchable picker.
- Override attributes
Fill in at least one overridable attribute. The others stay at “(no override)” and follow the cascade.
- Submit
The record is unique per (PartNumber, scope). To change an existing override’s scope, delete it and recreate it.
Test resolution
The “Test resolution” button opens a dialog where you freely pick a context (family, company,
BU, aircraft…) and immediately see the effective values for each attribute, with the source:
default (native PN value) or override · {scope} (an override from a specific scope).
Useful to validate that a new variant actually takes effect on the target aircraft before committing to a business stakeholder.
API reference
-
GET
/part-numbers/:id/effectivity-overrides—lists the contextual variants declared on this PartNumber.
-
POST
/part-numbers/:id/effectivity-overrides—creates a variant (exactly one scope FK + at least one attribute). Global admin only.
-
PATCH
/part-numbers/effectivity-overrides/:overrideId—updates the overridden attributes (the scope is frozen). Global admin only.
-
DELETE
/part-numbers/effectivity-overrides/:overrideId—removes a variant. Global admin only.
-
GET
/part-numbers/:id/resolve—resolves attributes for a given context (query string
aircraftId,businessUnitId,companyId,versionId,variantId,familyId— all optional).
See also
- Admin → Part Numbers — part catalogue.
- Applicable configurations — product hierarchy Family / Variant / Version.
- Fleet — aircraft that can be targeted by an override.