diff --git a/infra/schema/src/main/resources/xml/ns/public/model/scripting/scripting-3.xsd b/infra/schema/src/main/resources/xml/ns/public/model/scripting/scripting-3.xsd
index 0ccb1080e7d..9c127048665 100644
--- a/infra/schema/src/main/resources/xml/ns/public/model/scripting/scripting-3.xsd
+++ b/infra/schema/src/main/resources/xml/ns/public/model/scripting/scripting-3.xsd
@@ -314,6 +314,18 @@
+
+
+
+ Whether to aggregate and pass forward the output of expression evaluations that are done
+ for each object found. (Meaningful only if scriptingExpression is specified.)
+ Default is true for compatibility reasons. Set to false to optimize memory consumption.
+
+
+ 3.7.1
+
+
+
diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/expressions/SearchEvaluator.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/expressions/SearchEvaluator.java
index a67bf7fe7f3..41e7251163b 100644
--- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/expressions/SearchEvaluator.java
+++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/expressions/SearchEvaluator.java
@@ -44,6 +44,7 @@
import com.evolveum.midpoint.xml.ns._public.model.scripting_3.SearchExpressionType;
import org.apache.commons.lang.Validate;
import org.apache.commons.lang.mutable.MutableBoolean;
+import org.apache.commons.lang3.BooleanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -137,9 +138,12 @@ public PipelineData evaluate(SearchExpressionType searchE
}
JAXBElement> childExpression = searchExpression.getScriptingExpression();
try {
- outputData.addAllFrom(scriptingExpressionEvaluator.evaluateExpression(
+ PipelineData expressionResult = scriptingExpressionEvaluator.evaluateExpression(
(ScriptingExpressionType) childExpression.getValue(),
- PipelineData.create(object.getValue(), item.getVariables()), context, globalResult));
+ PipelineData.create(object.getValue(), item.getVariables()), context, globalResult);
+ if (!BooleanUtils.isFalse(searchExpression.isAggregateOutput())) {
+ outputData.addAllFrom(expressionResult);
+ }
globalResult.setSummarizeSuccesses(true);
globalResult.summarize();
} catch (ScriptExecutionException e) {