# MetadataMappingType (Complex Type)

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

Supertype: AbstractMappingType
Specialization of abstract mapping for metadata mappings.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
name | property string | [0,1] | Short name of the mapping.
mappingAlias | property string | [0,-1] | Short alias 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] | The expression is optional.
target | property VariableBindingDefinitionType | [0,1] | The target element effectively defines where the result of the mapping will be stored or applied.
condition | property ExpressionType | [0,1] |
enabled | property boolean | [0,1] | Specifies if the mapping is enabled and is being evaluated.
scope | property MetadataMappingScopeType | [1,1] | Is this mapping to be used during value transformation, value consolidation, or in both contexts?

- ### Items

  - #### name

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order: 110

    Short name of the mapping. Used for provenance metadata management and debugging purposes.

  - #### mappingAlias

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

    Short alias of the mapping. Used for provenance metadata management and debugging purposes. Alias is usually previous name of the mapping and it is used to identify mapping values which were emitted in previous version of the mapping.

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

  - #### lifecycleState

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    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]

    Display order:

    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]

    Display order:

    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]

    Display order:

    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]

    Display order:

    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]

    Display order: 120

    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]

    Display order:

    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]

    Display order:

    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]

    Display order:

  - #### timeTo

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### source

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Display order:

  - #### expression

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    The expression is optional. If omitted, the mapping may simply copy the source value(s) to the target ("as is"), depending on configuration.

  - #### target

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    The target element effectively defines where the result of the mapping will be stored or applied.

  - #### condition

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

  - #### enabled

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Display order:

    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.

  - #### scope

    Flags: RAM,runtime,AVals:2

    Multiplicity: [1,1]

    Display order:

    Is this mapping to be used during value transformation, value consolidation, or in both contexts?