# ObjectTemplateMappingType (Complex Type)

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

Supertype: MappingType

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
name | property string | [0,1] | Short name of the mapping.
description | property string | [0,1] |
documentation | property string | [0,1] | Technical documentation for a particular object or construct.
lifecycleState | property string | [0,1] | Lifecycle state of the mapping.
extension | container ExtensionType | [0,1] | Place for non-standard object properties.
trace | property boolean | [0,1] | Explicitly trace the execution of this mapping.
authoritative | property boolean | [0,1] | Authoritative flag controls the way how mapping is used to remove values.
exclusive | property boolean | [0,1] | Exclusive mapping may be applied only as a single mapping for a particular target property.
strength | property MappingStrengthType | [0,1] | Strength of the mapping defines how aggressively will the mapping be applied.
channel | property anyURI | [0,-1] | Limits application of this mapping only to specific channel.
exceptChannel | property anyURI | [0,-1] | Limits application of this mapping except for channel specified.
timeFrom | property MappingTimeDeclarationType | [0,1] |
timeTo | property MappingTimeDeclarationType | [0,1] |
source | property VariableBindingDefinitionType | [0,-1] |
expression | property ExpressionType | [0,1] |
target | property VariableBindingDefinitionType | [0,1] |
condition | property ExpressionType | [0,1] |
enabled | property boolean | [0,1] | Specifies if the mapping is enabled and is being evaluated.
metadataMapping | container MetadataMappingType | [0,-1] | Explicit definition of metadata mappings.
ignoreMetadataProcessing | property ItemPathType | [0,-1] | When set, processing of given metadata item (specified by path prefix) is completely ignored for this mapping.
evaluationPhase | property ObjectTemplateMappingEvaluationPhaseType | [0,1] |

- ### Items

  - #### name

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Short name of the mapping. Used for debugging purposes.

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

  - #### lifecycleState

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Lifecycle state of the mapping. Production configuration consists (by default) of `active` and `deprecated` ones. Development configuration consists (by default) of `active` and `proposed` ones.

  - #### extension

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Place for non-standard object properties. The elements placed here will be handled exactly like the elements in the object body. It must NOT contain standard elements.

  - #### trace

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Explicitly trace the execution of this mapping. 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.

  - #### authoritative

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Authoritative flag controls the way how mapping is used to remove values. It does not influence adding of values. If mapping is authoritative then it will add value and also remove the value. If mapping is not authoritative it will only add the value.

    Non-authoritative mappings are used if there are several possible sources for a particular value. E.g. the value may be added by the mapping and also added directly on the resource by system administrator. In this case midPoint cannot remove the value when the assignment (or role) containing the mapping is removed because the value might have been added manually. Other settings, such as tolerance may apply on attribute level.

    The default value for authoritative flag is true.

    Development note: Even though there is an overlap with mapping range, we still need this option. Empty mapping range may avoid deletion of values that are not produced by a mapping. However, the mapping may still create delete deltas in a "relative" way. Setting authoritative to false disables that, making sure the mapping will never remove a value. However, it is not clear how many people are actually using this feature. This feature was designed in early stages of midPoint development. We have more sophisticated mechanisms now. Therefore, it is not clear whether this option is still needed. Should it be a candidate for deprecation?

  - #### exclusive

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Exclusive mapping may be applied only as a single mapping for a particular target property. If an exclusive mapping is applied together with any other mapping it results in an error.

    The default value for exclusive flag is false.

    Development note: Naturally enforced for single-valued items, do we need this also for multi-value?

  - #### strength

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    Strength of the mapping defines how aggressively will the mapping be applied. The strongest mappings are applied all the time (regardless of the consequences) and the weakest mappings are applied only if nothing else can be applied.

  - #### channel

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Limits application of this mapping only to specific channel. If the channel is listed then the mapping will be applied. If it is not then it will not be applied. If no channel is specified then no limitations apply and the mapping will be applied for all channels.

  - #### exceptChannel

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Limits application of this mapping except for channel specified. If the channel is listed then the mapping will be not applied in this channel. If it is not then it will be applied. If no channel is specified then no limitations apply and the mapping will be applied for all channels.

  - #### timeFrom

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### timeTo

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### source

    Flags: RAM,runtime

    Multiplicity: [0,-1]

  - #### expression

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### target

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### condition

    Flags: RAM,runtime

    Multiplicity: [0,1]

  - #### enabled

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Specifies if the mapping is enabled and is being evaluated. Default value is true. It means, that each defined mapping is by default enabled. To skip mapping evaluation, it has to be set to false. DEPRECATED. Use value DRAFT for lifecycleState element, that means same behaviour.

  - #### metadataMapping

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Explicit definition of metadata mappings. Should be used only when really needed: Metadata item definition is the preferred way how to express metadata handling.

  - #### ignoreMetadataProcessing

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    When set, processing of given metadata item (specified by path prefix) is completely ignored for this mapping. VERY EXPERIMENTAL

  - #### evaluationPhase

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]