# SearchObjectExpressionEvaluatorType (Complex Type)

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

Supertype: TransformExpressionEvaluatorType

Create an expression based on search results.

Note: search expression evaluators have changed default for includeNullInputs. Null inputs are NOT processed by search expression evaluators by default. The reason is that null inputs are usually insignificant for search expression and skipping them results in fewer search operations.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
description | property string | [0,1] | Free-form textual description of the object.
documentation | property string | [0,1] | Technical documentation for a particular object or construct.
trace | property boolean | [0,1] | Explicitly trace the execution of this expression.
relativityMode | property TransformExpressionRelativityModeType | [0,1] | Relativity mode of an expression, whether expression is processed in relative or absolute more.
includeNullInputs | property boolean | [0,1] | If set to true (which is the default) the script will be evaluated with null value as argument when the input is changed from or to an empty value.
condition | property ExpressionType | [0,1] | Condition driving whether this expression is evaluated at all (for given inputs).
targetType | property QName | [0,1] |
oid | property string | [0,1] | Fixed OID.
filter | property SearchFilterType | [0,-1] | Filter or filters to use to look for objects.
searchStrategy | property ObjectSearchStrategyType | [0,1] | How we try to find matching objects.
defaultTargetRef | reference ObjectReferenceType | [0,1] | Reference that will be used if no target is found.
createOnDemand | property boolean | [0,1] |
populateObject | property PopulateType | [0,1] | TODO
populate | property PopulateType | [0,1] | Populate assignment, association,.

- ### Items

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Free-form textual description of the object. It is supposed to describe the object or a construct that it is attached to.

    This information may be presented to midPoint users, even to ordinary end users. For example role description may be presented to users when they are selecting roles to request. Therefore the description should be written in a language that the users can understand.

    Description is assumed to be a plan, non-formatted text. Amount of white space is considered insignificant. E.g. leading and trailing white space may be skipped, multiple spaces can be collapsed to one and so on.

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

  - #### trace

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Explicitly trace the execution of this expression. The execution will be logged on INFO level if this property is set to true to make sure that it will be visible in the logs.

  - #### relativityMode

    Flags: RAM,runtime,AVals:2

    Multiplicity: [0,1]

    Display order:

    Relativity mode of an expression, whether expression is processed in relative or absolute more. In relative mode the inputs are provided to the expression one-by-one. In absolute mode all inputs are provided to the expression at the same time.

  - #### includeNullInputs

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    If set to true (which is the default) the script will be evaluated with null value as argument when the input is changed from or to an empty value. This generally works well for most cases. It may be set to false as an optimization. Note: default setting for this property may be overridden in specific expression evaluators.

  - #### condition

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Condition driving whether this expression is evaluated at all (for given inputs).

  - #### targetType

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### oid

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Fixed OID. If this OID is present then no search will be done. It is planned to be used to "remember" the search result. E.g. to search for the target on import and then store the fixed OID. But this is not yet implemented. Actually, it can be a problem if multiple objects are found by the search by filter.

  - #### filter

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

    Filter or filters to use to look for objects.

  - #### searchStrategy

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    Display order:

    How we try to find matching objects. Note that when "onResourceIfNeeded" is used, it is applied onto the filters individually. That means, that each filter is evaluated against the repository, and if nothing is found, the resource is consulted.

  - #### defaultTargetRef

    Flags: RAM

    Multiplicity: [0,1]

    Display order:

    Reference that will be used if no target is found.

  - #### createOnDemand

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### populateObject

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    TODO

  - #### populate

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    Populate assignment, association,... (any container) specific attributes, e.g activation status, validTo, validFrom and can be also used for setting assignment parameters