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

  1. Aircraft

    Override on a specific aircraft (local derogation case).

  2. Business Unit
    Override for a BU of an operating company.
  3. Company
    Override for an operator’s whole fleet.
  4. Product version
    Override on a specific version of a variant.
  5. Product variant
    Override on a variant (e.g. Rafale M).
  6. Product family
    Override on the whole family (e.g. Rafale).
  7. 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 when csi = true, absent when csi = 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

  1. Open the PartNumber admin sheet

    From Admin → Part Numbers, open the part sheet then the “Contextual variants” tab.

  2. 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.

  3. Override attributes

    Fill in at least one overridable attribute. The others stay at “(no override)” and follow the cascade.

  4. 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