# 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]

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

  - #### name

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### displayName

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### documentation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    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]

    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]

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

  - #### approverExpression

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    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]

    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]

    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]

    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]

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

  - #### additionalInformation

    Flags: RAM,runtime

    Multiplicity: [0,1]

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

  - #### automaticallyCompleted

    Flags: RAM,runtime

    Multiplicity: [0,1]

    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]

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

  - #### timedActions

    Flags: RAM,runtime

    Multiplicity: [0,-1]

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