Some sample operations

Last modified 12 Mar 2021 10:22 +01:00

Admin provides given and family name

See TestValueMetadata.test900ProvideNamesByAdmin.

State before (operational data left out):

<user oid="31984da7-e162-4e22-a437-6f60d80092c4" version="1">
    <name>leonhard</name>
</user>

Primary delta:

<value ...>
    <t:changeType>modify</t:changeType>
    <t:objectType>c:UserType</t:objectType>
    <t:oid>31984da7-e162-4e22-a437-6f60d80092c4</t:oid>
    <t:itemDelta>
        <t:modificationType>add</t:modificationType>
        <t:path>c:givenName</t:path>
        <t:value>
            <_value xsi:type="t:PolyStringType">Leonhard</_value>
            <_metadata>
                <provenance>
                    <yield>
                        <acquisition>
                            <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                            <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                            <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                        </acquisition>
                    </yield>
                </provenance>
            </_metadata>
        </t:value>
    </t:itemDelta>
    <t:itemDelta>
        <t:modificationType>add</t:modificationType>
        <t:path>c:familyName</t:path>
        <t:value>
            <_value xsi:type="t:PolyStringType">Euler</_value>
            <_metadata>
                <provenance>
                    <yield>
                        <acquisition>
                            <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                            <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                            <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                        </acquisition>
                    </yield>
                </provenance>
            </_metadata>
        </t:value>
    </t:itemDelta>
</value>

Note the origin:

<service xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
         oid="6c0a7a75-0551-4842-807d-424e279a257f">
    <name>Admin data entry</name>
    <description>Data entered manually by the administrator</description>
</service>

State after:

<user oid="31984da7-e162-4e22-a437-6f60d80092c4" version="3">
    <name>leonhard</name>
    <fullName>
        <_value>Leonhard Euler</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </fullName>
    <givenName>
        <_value>Leonhard</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </givenName>
    <familyName>
        <_value>Euler</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </familyName>
</user>

In short:

- givenName: Leonhard
   - yield:
     - acquisition: admin entry
- familyName: Euler
   - yield:
     - acquisition: admin entry
- fullName: Leonhard Euler
   - yield:
     - acquisition: admin entry

The givenName and familyName values have acquisition as given by the values sent in ADD delta. The fullName value has a single-acquisition yield because the two source acquisitions are considered equivalent. (Timestamp is considered irrelevant…​ should it be so?)

The same family name is provided by external application

See TestValueMetadata.test910AddSameFamilyNameByRest.

State before is the same as was after previous test.

Primary delta:

<value ...>
    <t:changeType>modify</t:changeType>
    <t:objectType>c:UserType</t:objectType>
    <t:oid>31984da7-e162-4e22-a437-6f60d80092c4</t:oid>
    <t:itemDelta>
        <t:modificationType>add</t:modificationType>
        <t:path>c:familyName</t:path>
        <t:value>
            <_value xsi:type="t:PolyStringType">Euler</_value>
            <_metadata>
                <provenance>
                    <yield>
                        <acquisition>
                            <timestamp>2020-07-15T16:11:36.713+02:00</timestamp>
                            <channel>http://midpoint.evolveum.com/xml/ns/public/model/channels-3#rest</channel>
                            <originRef oid="760fda34-846f-4aac-a5ac-881c0ff23653" relation="org:default" type="c:ServiceType"/>
                        </acquisition>
                    </yield>
                </provenance>
            </_metadata>
        </t:value>
    </t:itemDelta>
</value>

Note the origin:

<service xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
         oid="760fda34-846f-4aac-a5ac-881c0ff23653">
    <name>Self service app</name>
    <description>Data entered by the self service application</description>
</service>

State after:

<user ... oid="31984da7-e162-4e22-a437-6f60d80092c4" version="5">
    <name>leonhard</name>
    <fullName>
        <_value>Leonhard Euler</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:36.713+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/model/channels-3#rest</channel>
                        <originRef oid="760fda34-846f-4aac-a5ac-881c0ff23653" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </fullName>
    <givenName>
        <_value>Leonhard</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </givenName>
    <familyName>
        <_value>Euler</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:35.512+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:36.713+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/model/channels-3#rest</channel>
                        <originRef oid="760fda34-846f-4aac-a5ac-881c0ff23653" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </familyName>
</user>

In short:

- givenName: Leonhard
   - yield:
     - acquisition: admin entry
- familyName: Euler
   - yield:
     - acquisition: admin entry
   - yield:
     - acquisition: rest
- fullName: Leonhard Euler
   - yield:
     - acquisition: admin entry
   - yield:
     - acquisition: admin entry
     - acquisition: rest

Value Leonhard of givenName has the same acquisition as before (admin entry). Value Euler of familyName has two yields: original (acquisition = admin entry) and new one (acquisition = rest).

Value Leonhard Euler of fullName has two yields, because of the consolidation of original and newly computed value: - original value of Leonhard Euler with a single acquisition of "admin entry"; - newly computed value of Leonhard Euler with a combined acquisition of "admin entry" plus "rest" (union of all acquisitions for Leonhard and Euler)

Is this correct? Maybe no. Maybe the fullname should be like this:

- fullName: Leonhard Euler
   - yield:
     - acquisition: admin entry
     - acquisition: rest

But it’s quite hard to distinguish situations where the new yield should overwrite existing one(s) from situations where new yield should be appended to existing one(s).

Object is imported from a resource

See TestValueMetadata.test920ImportBlaise.

A new user is imported from HR.

Note that

<service xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
         oid="f43bd824-e07e-4a41-950e-00de06881555">
    <name>HR employee feed</name>
    <description>Automated feed of employee data from the HR system</description>
</service>

and

<resource oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" ...>
    <name>resource-hr</name>
    <schemaHandling>
        <objectType>
            ...
            <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" type="ServiceType"/> <!-- HR employee feed -->
        </objectType>
    </schemaHandling>
</resource>

State after:

<user xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3" xmlns:org="http://midpoint.evolveum.com/xml/ns/public/common/org-3" xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3" xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3" xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3" oid="095ab0b3-c158-4779-bace-ceae2b4f53b3" version="2">
    <name>
        <_value>blaise</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.308+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </name>
    <assignment id="1"> <!-- created by inbound -->
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.308+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
        <targetRef oid="b2117a51-a516-4151-9168-30f8baa78ec2" relation="org:default" type="c:ArchetypeType"/>
        <activation>
            <effectiveStatus>enabled</effectiveStatus>
        </activation>
    </assignment>
    <fullName>
        <_value>Blaise Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </fullName>
    <givenName>
        <_value>Blaise</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </givenName>
    <familyName>
        <_value>Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.305+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </familyName>
</user>

In short:

- givenName: Blaise
   - yield:
     - acquisition: hr
- familyName: Pascal
   - yield:
     - acquisition: hr
- fullName: Blaise Pascal
   - yield:
     - acquisition: hr

So far so good.

Admin reinforces the family name

See TestValueMetadata.test930ReinforceFamilyNameByManualEntry.

Primary delta:

<value ...>
    <t:changeType>modify</t:changeType>
    <t:objectType>c:UserType</t:objectType>
    <t:oid>095ab0b3-c158-4779-bace-ceae2b4f53b3</t:oid>
    <t:itemDelta>
        <t:modificationType>add</t:modificationType>
        <t:path>c:familyName</t:path>
        <t:value>
            <_value xsi:type="t:PolyStringType">Pascal</_value>
            <_metadata>
                <provenance>
                    <yield>
                        <acquisition>
                            <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                            <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                            <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                            <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                        </acquisition>
                    </yield>
                </provenance>
            </_metadata>
        </t:value>
    </t:itemDelta>
</value>

Result:

<user ... oid="095ab0b3-c158-4779-bace-ceae2b4f53b3" version="4">
    <name>
        <_value>blaise</_value>
        <_metadata> ... </_metadata>
    </name>
    <fullName>
        <_value>Blaise Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </fullName>
    <givenName>
        <_value>Blaise</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </givenName>
    <familyName>
        <_value>Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.305+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </familyName>
</user>

I.e.

- givenName: Blaise
   - yield:
     - acquisition: hr
- familyName: Pascal
   - yield:
     - acquisition: hr
   - yield:
     - acquisition: admin entry
- fullName: Blaise Pascal
   - yield:
     - acquisition: hr
   - yield:
     - acquisition: hr
     - acquisition: admin entry

Again, value of Blaise Pascal of fullName has two yields, because of the consolidation of original and newly computed value.

Admin reinforces also the given name

See TestValueMetadata.test940ReinforceGivenNameByManualEntry.

Primary delta:

<value ...>
    <t:changeType>modify</t:changeType>
    <t:objectType>c:UserType</t:objectType>
    <t:oid>095ab0b3-c158-4779-bace-ceae2b4f53b3</t:oid>
    <t:itemDelta>
        <t:modificationType>add</t:modificationType>
        <t:path>c:givenName</t:path>
        <t:value>
            <_value xsi:type="t:PolyStringType">Blaise</_value>
            <_metadata>
                <provenance>
                    <yield>
                        <acquisition>
                            <timestamp>2020-07-15T16:11:44.665+02:00</timestamp>
                            <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                            <actorRef oid="8d162a31-00a8-48dc-b96f-08d3a85ada1d" type="c:UserType"/>
                            <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                        </acquisition>
                    </yield>
                </provenance>
            </_metadata>
        </t:value>
    </t:itemDelta>
</value>

(The actor is a different admin, this time it is jim.)

The result:

<user ... oid="095ab0b3-c158-4779-bace-ceae2b4f53b3" version="6">
    <name>
        <_value>blaise</_value>
        <_metadata> ... </_metadata>
    </name>
    <fullName>
        <_value>Blaise Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:44.665+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="8d162a31-00a8-48dc-b96f-08d3a85ada1d" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </fullName>
    <givenName>
        <_value>Blaise</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.309+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:44.665+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="8d162a31-00a8-48dc-b96f-08d3a85ada1d" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </givenName>
    <familyName>
        <_value>Pascal</_value>
        <_metadata>
            <provenance>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:38.305+02:00</timestamp>
                        <resourceRef oid="9a34c3b6-aca5-4f9b-aae4-24f3f2d98ce9" type="c:ResourceType"/>
                        <originRef oid="f43bd824-e07e-4a41-950e-00de06881555" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
                <yield>
                    <acquisition>
                        <timestamp>2020-07-15T16:11:41.891+02:00</timestamp>
                        <channel>http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user</channel>
                        <actorRef oid="00000000-0000-0000-0000-000000000002" type="c:UserType"/>
                        <originRef oid="6c0a7a75-0551-4842-807d-424e279a257f" relation="org:default" type="c:ServiceType"/>
                    </acquisition>
                </yield>
            </provenance>
        </_metadata>
    </familyName>
</user>

Simplified version:

- givenName: Blaise
   - yield:
     - acquisition: hr
   - yield:
     - acquisition: admin entry (jim)
- familyName: Pascal
   - yield:
     - acquisition: hr
   - yield:
     - acquisition: admin entry (administrator)
- fullName: Blaise Pascal
   - yield:
     - acquisition: hr
   - yield:
     - acquisition: hr
     - acquisition: admin entry (administrator)
   - yield:
     - acquisition: hr
     - acquisition: admin entry (jim)
     - acquisition: admin entry (administrator)

The first yield for Blaise Pascal is from the original import process. The second one is from the state where administrator manually entered (confirmed?) value of Pascal. And the third one is from the state where jim manually entered (confirmed?) value of Blaise.

Does it make any sense?

Current algorithms

Transformation - i.e. mapping evaluation

Input: provenance metadata of all input values (e.g. for Leonhard and Euler. Processing: Merges all distinct acquisitions into a single yield.

Consolidation

Input: provenance metadata of all relevant "versions" of the value Processing: Computes a union of all yields.

What exactly is the input?

  1. When adding value computed by a mapping, these are all relevant mappings (from plus and sometimes zero set), also values being added by a priori delta (i.e. ADD or REPLACE sets), and existing values: https://github.com/Evolveum/midpoint/blob/29ce55d26866404526fde5aa6a186820c5b12e8a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/IvwoConsolidator.java#L574-L578.

  2. When reinforcing value computed by a mapping to a zero set, these are:

  3. When consolidating a priori delta (currently primary delta), these are:

    • existing value,

    • values being added by a priori delta.