# ApprovalStageDefinitionType (Complex Type)

### Namespace: http://midpoint.evolveum.com/xml/ns/public/common/common-3

One "level" (or stage) in the approval process.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
number | property int | [0,1] | Number of this approval stage.
name | property string | [0,1] |
displayName | property string | [0,1] |
description | property string | [0,1] |
documentation | property string | [0,1] | Technical documentation for a particular object or construct.
approverRef | reference ObjectReferenceType | [0,-1] | Instruction to approve something, by a user (if this points to a User object) or by someone from a group of users (if this points to a Org object; representing all users that belong to that organization).
approverRelation | property QName | [0,-1] | What relation(s) to use when determining approvers? E.
approverExpression | property ExpressionType | [0,-1] | Dynamically specifies approver(s).
evaluationStrategy | property LevelEvaluationStrategyType | [0,1] | Must all approvers at this stage approve the thing (allMustApprove), or first decision is taken as authoritative (firstDecides)?
outcomeIfNoApprovers | property ApprovalLevelOutcomeType | [0,1] | What is the outcome (of this stage) if there are no approvers? E.
groupExpansion | property GroupExpansionType | [0,1] | How should be "groups" (orgs, roles) expanded? Default is "byClaimingWorkItem", i.
formRef | reference ObjectReferenceType | [0,1] | Form to be displayed e.
additionalInformation | property ExpressionType | [0,1] | Additional information for approver.
automaticallyCompleted | property ExpressionType | [0,1] | Expression specifying that this stage should be automatically processed (approved, rejected, skipped).
duration | property duration | [0,1] | Duration of work items created at this stage.
timedActions | container WorkItemTimedActionsType | [0,-1] | What actions are to be applied to work items when given timer(s) occur.

- ### Items

  - #### number

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Number of this approval stage. These should go from 1 to N.

  - #### name

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### displayName

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### documentation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Technical documentation for a particular object or construct.

    The purpose of this element is to document system configuration and behavior. The documentation will not be presented to end users. In fact, it will probably not be presented at all in midPoint user interface. This documentation element is supposed to be a part of the technical documentation of midPoint deployment. The tools than generate deployment configuration will look for these elements and combine them to compiled documentation document.

    AsciiDoc formatting is assumed for this element. Any leading or trailing whitespace is skipped. Indentation equivalent to he indentation of the first non-blank line of text is also skipped.

  - #### approverRef

    Flags: RAM

    Multiplicity: [0,-1]

    Display order:

    Instruction to approve something, by a user (if this points to a User object) or by someone from a group of users (if this points to a Org object; representing all users that belong to that organization).

  - #### approverRelation

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

    What relation(s) to use when determining approvers? E.g. "approver", "owner", "securityApprover", and so on.

  - #### approverExpression

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

    Dynamically specifies approver(s). If specified, the expression(s) are evaluated and the result is used as a set of approvers (UserType, OrgType, RoleType, or any combination of them). May be used with approverRef element(s).

  - #### evaluationStrategy

    Flags: RAM,runtime,AVals:2

    Multiplicity: [0,1]

    Display order:

    Must all approvers at this stage approve the thing (allMustApprove), or first decision is taken as authoritative (firstDecides)?

  - #### outcomeIfNoApprovers

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    Display order:

    What is the outcome (of this stage) if there are no approvers? E.g. there are no users that have been assigned a role as an approver; or a user has no managers, etc.

  - #### groupExpansion

    Flags: RAM,runtime,AVals:2

    Multiplicity: [0,1]

    Display order:

    How should be "groups" (orgs, roles) expanded? Default is "byClaimingWorkItem", i.e. they are not expanded at all - their members can claim corresponding work items.

  - #### formRef

    Flags: RAM

    Multiplicity: [0,1]

    Display order:

    Form to be displayed e.g. to present or request additional information. EXPERIMENTAL

  - #### additionalInformation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Additional information for approver. Will be displayed when work item will be worked on.

  - #### automaticallyCompleted

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Expression specifying that this stage should be automatically processed (approved, rejected, skipped). If the expression returns null, standard processing by human actors is carried out.

  - #### duration

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Duration of work items created at this stage. TODO other time units, like business days?

  - #### timedActions

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

    What actions are to be applied to work items when given timer(s) occur. EXPERIMENTAL