<report 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"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
oid="0080b237-b8e3-4e3c-8209-d1fcc5fad186">
<name>Audit report with changed attributes</name>
<assignment>
<targetRef oid="00000000-0000-0000-0000-000000000171" relation="default" type="ArchetypeType">
<!-- Collection report -->
</targetRef>
</assignment>
<archetypeRef oid="00000000-0000-0000-0000-000000000171" relation="default" type="ArchetypeType">
<!-- Collection report -->
</archetypeRef>
<roleMembershipRef oid="00000000-0000-0000-0000-000000000171" relation="default" type="ArchetypeType">
<!-- Collection report -->
</roleMembershipRef>
<objectCollection>
<collection>
<collectionRef oid="00000000-0000-0000-0001-000000000002" relation="default" type="ObjectCollectionType">
<!-- Modification audit records -->
</collectionRef>
</collection>
<view>
<column>
<name>timestampColumn</name>
<path>timestamp</path>
</column>
<column>
<name>targetColumn</name>
<path>targetRef</path>
<previousColumn>timestampColumn</previousColumn>
</column>
<column>
<name>changedAttributesColumn</name>
<path>delta</path>
<display>
<label>Changed attributes</label>
</display>
<previousColumn>targetColumn</previousColumn>
<export>
<expression>
<script>
<code>
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.midpoint.schema.DeltaConvertor;
ret = new ArrayList();
for (ObjectDeltaOperationType deltaType : input) {
delta = DeltaConvertor.createObjectDeltaOperation(deltaType, midpoint.getPrismContext());
for (ItemDelta itemDelta : delta.getObjectDelta().getModifications()){
if(!itemDelta.getPath().toString().startsWith("metadata")) {
stringItem = itemDelta.getElementName().toString();
if (itemDelta.isAdd()) {
stringItem = stringItem + " (Add values: ";
for (addValue in itemDelta.getValuesToAdd()) {
stringItem = stringItem + addValue.getRealValue()
stringItem = stringItem + ","
}
stringItem = stringItem.substring(0, (stringItem.length()-1)) + ")"
}
if (itemDelta.isDelete()) {
stringItem = stringItem + " (Delete values: ";
for (deleteValue in itemDelta.getValuesToDelete()) {
stringItem = stringItem + deleteValue.getRealValue()
stringItem = stringItem + "'"
}
stringItem = stringItem.substring(0, (stringItem.length()-1)) + ")"
}
if (itemDelta.isReplace()) {
stringItem = stringItem + " (Replace values: ";
for (replaceValue in itemDelta.getValuesToReplace()) {
stringItem = stringItem + replaceValue.getRealValue()
stringItem = stringItem + ","
}
stringItem = stringItem.substring(0, (stringItem.length()-1)) + ")"
}
ret.add(stringItem);
}
}
}
return ret
</code>
</script>
</expression>
</export>
</column>
</view>
</objectCollection>
</report>
Collection report: Audit Report, Attribute Changes
Please see Report configuration for basic information about configuration variables.
Example Use-case
We need to create a report for audit events of modifications with a column for changed items.
Configuration
Configuration for this use case consists only from the report itself, because we use an object collection from the initial objects.
Example Report Configuration
Was this page helpful?
YES
NO
Thanks for your feedback