Member Junction
    Preparing search index...

    Promote a Pending override to Active. Flips:

    • target Override: Status='Active'
    • target Override's Component: Status='Active'
    • prior Active sibling Override: Status='Inactive'
    • prior Active sibling Component: Status='Inactive'

    "Sibling" = another of the caller's User-scope overrides on the same EntityID that is currently Status='Active'. The target is the row identified by the input OverrideID.

    Only the caller's own User-scope overrides can be activated. 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. The target's Component and Override flip to Active in one entity transaction. Each prior Active sibling is set aside after that transaction: its Override first, then its Component. Every prior is tried. If a save fails, the action returns PERSIST_FAILED that names each prior row not updated, and the target stays Active. A prior whose Override could not be set aside is still Active, so a retry sets it aside. A prior whose Override is set aside but whose Component status could not be updated is not found by a retry, and its Component keeps its old status.

    Idempotency. If the target Override is already Active, the caller's other Active overrides on the entity are set aside and the action returns SUCCESS with a no-op message that carries DemotedCount. So a retry after PERSIST_FAILED sets aside a prior whose Override could not be set aside; a prior whose Component status could not be updated is not found again. If the target is Inactive, that's a misuse — we surface NOT_PENDING so the agent / UI can ask the user what they really want.

    Inputs:

    • OverrideID (required, string) — the Pending override to activate

    Outputs:

    • ComponentID — the Component now Active
    • OverrideID — echoed for convenience
    • PreviousActiveOverrideID — the first override that was demoted (or null)

    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