Member Junction
    Preparing search index...

    Revert the user's Active override to an older Component version. Pure re-point: no new Component is created, no new Override row is created.

    Behaviour:

    • Identify the Active Override for the (entity, user) — we either take it from the input ActiveOverrideID if supplied, or look it up using the target Component's EntityID.
    • Identify the target Component to revert to — by TargetComponentID or by TargetVersionSequence (relative to the Component lineage sharing the same Name as the currently-active Component).
    • Set Active Override's ComponentID to the target → save.
    • Flip the previously-pointed Component to Status='Inactive', target Component to Status='Active'.

    The override is saved first. Both Component status saves are then tried, even when the first fails. If either fails, or the target Component cannot be loaded for its status save, the action returns PERSIST_FAILED that names every Component whose status was not updated; the override stays re-pointed. The override then already points at the target, so a retry with the same target returns SUCCESS from the no-op path and the Component statuses stay as they are.

    Old Component rows are never deleted — they remain as immutable history. A subsequent revert can move forward again to any version.

    Only the caller's own User-scope overrides can be reverted. A Role or Global override, or another user's, returns FORBIDDEN for every caller (see CheckPersonalWrite in _shared.ts): shared forms are managed from Form Builder or the form's Manage drawer.

    Inputs:

    • ActiveOverrideID (required, string) — the Active override to re-point
    • One of:
      • TargetComponentID (string) — explicit Component to revert to, or
      • TargetVersionSequence (number) — pick the Component with this VersionSequence in the same Name lineage

    Outputs:

    • OverrideID — echoed
    • ComponentID — the newly-Active component
    • PreviousComponentID — the component we demoted
    • Version — version string of the now-Active component

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    AuthorizesCaller: true

    Changes only the caller's own User-scope forms and panels, with the caller's permissions.

    Accessors

    • get SupportsAudience(): boolean

      Whether this action can bound what it returns to an audience (RunActionParams.Audience): everyone besides the caller who will see its output, such as the other participants of a shared conversation.

      false by default, and the engine enforces it: when a run's audience adds a reader beyond the caller, ActionEngineServer.RunAction refuses the action with result code AUDIENCE_UNSUPPORTED, without running it. Override to return true only when the action honours the audience in full — every record, snippet and count it returns is something every reader may see (pass the audience to the search engine, check each reader's entitlement to anything it scopes by, and leave out aggregates computed before that filtering).

      Returns boolean

    Methods