# ObjectTemplateItemDefinitionType (Complex Type)

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

Supertype: ItemRefinedDefinitionType
TODO Description of the common item handling details, such as display name, read/write access and value and synchronization expressions. These are the parts that are common to both attributes and associations. This is supposed to be used in schemaHandling part and therefore describe the decisions of the system administrator about the way how that attribute or association is used in midPoint.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
ref | property ItemPathType | [1,1] | Path of the item or association that this definition describes.
displayName | property string | [0,1] |
help | property string | [0,1] | Help text for the displayed item.
description | property string | [0,1] |
documentation | property string | [0,1] |
lifecycleState | property string | [0,1] | Lifecycle state of the item.
changeApplicationMode | property ItemChangeApplicationModeType | [0,1] | How should the computed changes of this item be regarded? (Applied, recorded, ignored.
displayOrder | property int | [0,1] |
limitations | container PropertyLimitationsType | [0,-1] | Limits the usage of the attribute, e.
matchingRule | property QName | [0,1] | Specification of a matching rule for an attribute.
valueEnumerationRef | reference ObjectReferenceType | [0,1] | Reference to an object that directly or indirectly represents possible values for this item.
tolerant | property boolean | [0,1] | When set to true, allows attribute/property values that are set outside midPoint (or outside object template mappings).
tolerantValuePattern | property string | [0,-1] | Pattern (regexp) for attribute/property value.
intolerantValuePattern | property string | [0,-1] | Pattern (regexp) for attribute/property value.
emphasized | property boolean | [0,1] | Set true for definitions that are more important than others and that should be emphasized during presentation.
deprecated | property boolean | [0,1] | This setting can be used to control the value of "deprecated" flag determined from the schema.
experimental | property boolean | [0,1] | This setting can be used to control the value of "experimental" flag determined from the schema.
validation | property FormItemValidationType | [0,1] | Validation rules for the item.
persistence | property ItemPersistenceType | [0,1] | Whether values of this item should be persisted.
correlator | container ItemCorrelatorDefinitionType | [0,1] | Creates a single-item correlator for this item.
mapping | container ObjectTemplateMappingType | [0,-1] | Defines how any of the object property value should be constructed.
meta | container MetadataHandlingType | [0,1] | Definition of handling of a metadata items for this particular item.
indexing | container ItemIndexingDefinitionType | [0,1] | Defines "indexing" of item value or values, i.
multiSource | container MultiSourceItemDefinitionType | [0,1] | Marks the item as the one with multiple sources.
correlation | container ItemCorrelationDefinitionType | [0,1] | Specifies the correlation-related aspects of this item, for example, the search method to be used by default.

- ### Items

  - #### ref

    Flags: RAM,runtime

    Multiplicity: [1,1]

    Path of the item or association that this definition describes. It must point to property or the attribute in the resource schema that belongs to an object class that is being described here.

  - #### displayName

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### help

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Help text for the displayed item. Help text is usually displayed when the user clicks on help/information icon. This may be a longer text (several sentences).

    This is equivalent to "help" schema annotation and can be used to override it.

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### documentation

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### lifecycleState

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Lifecycle state of the item. Production configuration consists (by default) of `active` and `deprecated` ones. Development configuration consists (by default) of `active` and `proposed` ones. If the item is not in the configuration, it is ignored by the processing at the model level - no inbound nor outbound mappings are evaluated for it, as well as no (outbound) reconciliation is carried out. The effect is similar to setting "ignore" processing on the model level. Currently supported only for resource object items (attributes and associations).

  - #### changeApplicationMode

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    How should the computed changes of this item be regarded? (Applied, recorded, ignored.) Currently supported only for resource object attributes.

  - #### displayOrder

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### limitations

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Limits the usage of the attribute, e.g. whether it may is read-only, read write or entirely ignored. The limitations may apply to several system layers, therefore this element may be repeated several times. But it there may be only one instance for each layer. Note that the support for focus items at the model layer is limited.

  - #### matchingRule

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Specification of a matching rule for an attribute. Matching rule is used to compare values of the attribute. The default rule is a literal comparison which is good for most attribute types and for case-sensitive strings. An alternative matching rule may be specified e.g. for case insensitive strings.

  - #### valueEnumerationRef

    Flags: RAM

    Multiplicity: [0,1]

    Reference to an object that directly or indirectly represents possible values for this item. We do not define here what exactly the object has to be. It can be a lookup table, script that dynamically produces the values or anything similar. The object must produce the values of the correct type for this item otherwise an error occurs.

  - #### tolerant

    Flags: RAM,runtime

    Multiplicity: [0,1]

    When set to true, allows attribute/property values that are set outside midPoint (or outside object template mappings). The synchronization will only remove values that are assigned by midPoint (or template mappings), but will tolerate extra native values. When set to false, extra values are not tolerated. When midPoint detects such value (e.g. during reconciliation) it will remove it. Support of non-tolerant items in object templates is currently EXPERIMENTAL.

  - #### tolerantValuePattern

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Pattern (regexp) for attribute/property value. If the value matches the pattern such value is tolerated. It is left in the attribute/property even if it is not derived from any mapping. This element is currently supported only in resource object type definitions. Support in object templates is planned.

  - #### intolerantValuePattern

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Pattern (regexp) for attribute/property value. If the value matches the pattern such value is NOT tolerated. The value must be derived from a mapping or it will be removed. This element is currently supported only in resource object type definitions. Support in object templates is planned.

  - #### emphasized

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Set true for definitions that are more important than others and that should be emphasized during presentation. E.g. the emphasized definitions will always be displayed in the user interfaces (even if they are empty), they will always be included in the dumps, etc.

  - #### deprecated

    Flags: RAM,runtime

    Multiplicity: [0,1]

    This setting can be used to control the value of "deprecated" flag determined from the schema. I.e. it can be used to override the value taken from the schema. E.g. it can be used to "unmark" a deprecated item, so it will behave as normal, non-deprecated item. This may be used as a temporary measure during the period of migrating the configuration to non-deprecated setting.

  - #### experimental

    Flags: RAM,runtime

    Multiplicity: [0,1]

    This setting can be used to control the value of "experimental" flag determined from the schema. I.e. it can be used to override the value taken from the schema. E.g. it can be used to "unmark" an experimental item, so it will behave as normal, non-experimental item. USE WITH CARE. Experimental items are marked as experimental for a reason. When those items are "unmarked", they will not get any less experimental.

  - #### validation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Validation rules for the item. Validation rule may be applied in the user interface. But server-side validation may also be applied during the computation process.

  - #### persistence

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    Whether values of this item should be persisted. Currently implemented for metadata only.

  - #### correlator

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Creates a single-item correlator for this item. For attributes this automatically turns on "beforeCorrelation" mapping evaluation phase. (If not explicitly forbidden in the attribute definition.) Currently supported for attributes only.

  - #### mapping

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Defines how any of the object property value should be constructed. It can contain fixed value or an expression. In case an expression is used following variables should be set: $user - The user object being created. $account - (optional) the account from which was the user created (if present)

  - #### meta

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Definition of handling of a metadata items for this particular item.

  - #### indexing

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Defines "indexing" of item value or values, i.e. their transformation to a form suitable for advanced - for example, fuzzy - searching. Indexing is needed in two typical cases (often overlapping): - Either when a special transformation is necessary (e.g., taking first N characters of the normalized form; or a unique custom transformation) - and/or when we need to index data that are not searchable by default (e.g. multi-provenance properties, or properties not indexed by the repository).

  - #### multiSource

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Marks the item as the one with multiple sources. Such items are not stored directly in their "main" place in the focus objects, but in $focus/identities/identity[x]/data object instead. (Where identity[x] is the value assigned to the given source.) Then there may be special mapping or mappings devoted to the selection of the value or values to be stored right to the "main" place of the focus item.

  - #### correlation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Specifies the correlation-related aspects of this item, for example, the search method to be used by default.