<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<blockquote type="cite"
cite="mid:SN6PR08MB6126240E386C8F5542FF262AFF1BA@SN6PR08MB6126.namprd08.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal">Thank you, Pavol!!<o:p></o:p></p>
</div>
</blockquote>
<p>You're welcome :-)</p>
<blockquote type="cite"
cite="mid:SN6PR08MB6126240E386C8F5542FF262AFF1BA@SN6PR08MB6126.namprd08.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal">When I grow up, I want to know midPoint as
well as you do (or maybe even half as well)! :)<o:p></o:p></p>
</div>
</blockquote>
<p>Certainly you will! :) </p>
<p>BTW, I am very happy to see the community of people like you and
your colleagues at the universities. I hope this spirit of
cooperation will endure and will continue to grow.</p>
<p>With best wishes,<br>
Pavol<br>
</p>
<blockquote type="cite"
cite="mid:SN6PR08MB6126240E386C8F5542FF262AFF1BA@SN6PR08MB6126.namprd08.prod.outlook.com">
<div class="WordSection1">
<p class="MsoNormal"><o:p> <br>
</o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in
0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> midPoint
<a class="moz-txt-link-rfc2396E" href="mailto:midpoint-bounces@lists.evolveum.com"><midpoint-bounces@lists.evolveum.com></a> <b>
On Behalf Of </b>Pavol Mederly via midPoint<br>
<b>Sent:</b> Friday, August 18, 2023 9:48 AM<br>
<b>To:</b> <a class="moz-txt-link-abbreviated" href="mailto:midpoint@lists.evolveum.com">midpoint@lists.evolveum.com</a><br>
<b>Cc:</b> Pavol Mederly <a class="moz-txt-link-rfc2396E" href="mailto:mederly@evolveum.com"><mederly@evolveum.com></a><br>
<b>Subject:</b> Re: [midPoint] bulk action task for
removing assignment<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>Hello Paul,<o:p></o:p></p>
<p>just to propagate new features of midPoint, let me improve
your solution a little bit :)<o:p></o:p></p>
<p><span style="font-family:"Courier New""><task
xmlns=<a
href="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
moz-do-not-send="true">"http://midpoint.evolveum.com/xml/ns/public/common/common-3"</a><br>
xmlns:q=<a
href="http://prism.evolveum.com/xml/ns/public/query-3"
moz-do-not-send="true">"http://prism.evolveum.com/xml/ns/public/query-3"</a><br>
xmlns:s=<a
href="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"
moz-do-not-send="true">"http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"</a><br>
oid="41d8abfc-df45-4d6d-a44a-2fecd84e2813"><br>
<name>removing-org-assignments</name><br>
<executionState>runnable</executionState><br>
<activity><br>
<work><br>
<<span style="color:blue">iterativeScripting</span>><br>
<objects><br>
<type>UserType</type><br>
<query> <!-- to process only
relevant users --><br>
<q:filter><br>
<q:text><span
style="color:blue">assignment/targetRef matches
(targetType = OrgType)</span></q:text><br>
</q:filter><br>
</query><br>
</objects><br>
<scriptExecutionRequest><br>
<s:unassign><br>
<s:filter><br>
<q:text><span
style="color:blue">targetRef matches (targetType =
OrgType)</span></q:text><br>
</s:filter><br>
</s:unassign><br>
</scriptExecutionRequest><br>
</iterativeScripting><br>
</work><br>
</activity><br>
</task></span><o:p></o:p></p>
<p>Note the textual representation of filters, see <a
href="https://docs.evolveum.com/midpoint/reference/concepts/query/axiom-query-language/"
moz-do-not-send="true">
MidPoint Query Language</a> page. I am not sure about
whether this would run on 4.4.x, but definitely this is the
future of queries in midPoint. No more q:ref/q:equals
troubles...
<o:p></o:p></p>
<p>Also, note the <iterativeScripting> that provides
less memory usage (in some cases), multi-node/multithreading
ability, reporting, error control, and many many others ...<o:p></o:p></p>
<p>All the best,<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Pavol Mederly<o:p></o:p></pre>
<pre>Software developer<o:p></o:p></pre>
<pre>evolveum.com<o:p></o:p></pre>
<pre><o:p> </o:p></pre>
<div>
<p class="MsoNormal">On 18/08/2023 16:24, Paul Caskey via
midPoint wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">I was able to get the user filter to
work and you are correct – the task is performing much
better now and hasn’t crashed midpoint yet. Thank you,
Pavol!<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">For the record, here is the complete
<activity> section of the iterative task:<o:p></o:p></p>
<p class="MsoNormal"> <activity><o:p></o:p></p>
<p class="MsoNormal"> <work><o:p></o:p></p>
<p class="MsoNormal">
<nonIterativeScripting><o:p></o:p></p>
<p class="MsoNormal">
<scriptExecutionRequest xmlns:s=<a
href="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"
moz-do-not-send="true">"http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"</a>><o:p></o:p></p>
<p class="MsoNormal"> <s:search><o:p></o:p></p>
<p class="MsoNormal">
<s:type>UserType</s:type><o:p></o:p></p>
<p class="MsoNormal"> <s:query><o:p></o:p></p>
<p class="MsoNormal">
<q:filter><o:p></o:p></p>
<p class="MsoNormal">
<q:ref><o:p></o:p></p>
<p class="MsoNormal">
<q:path>assignment/targetRef</q:path><o:p></o:p></p>
<p class="MsoNormal">
<q:value type="OrgType" /><o:p></o:p></p>
<p class="MsoNormal">
</q:ref><o:p></o:p></p>
<p class="MsoNormal">
</q:filter><o:p></o:p></p>
<p class="MsoNormal">
</s:query><o:p></o:p></p>
<p class="MsoNormal">
<s:unassign><o:p></o:p></p>
<p class="MsoNormal">
<s:filter><o:p></o:p></p>
<p class="MsoNormal">
<q:ref><o:p></o:p></p>
<p class="MsoNormal">
<q:path>targetRef</q:path><o:p></o:p></p>
<p class="MsoNormal">
<q:value xmlns=""><o:p></o:p></p>
<p class="MsoNormal">
<type>OrgType</type><o:p></o:p></p>
<p class="MsoNormal">
</q:value><o:p></o:p></p>
<p class="MsoNormal">
</q:ref><o:p></o:p></p>
<p class="MsoNormal">
</s:filter><o:p></o:p></p>
<p class="MsoNormal">
</s:unassign><o:p></o:p></p>
<p class="MsoNormal"> </s:search><o:p></o:p></p>
<p class="MsoNormal">
</scriptExecutionRequest><o:p></o:p></p>
<p class="MsoNormal">
</nonIterativeScripting><o:p></o:p></p>
<p class="MsoNormal"> </work><o:p></o:p></p>
<p class="MsoNormal"> </activity><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue
1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> midPoint <a
href="mailto:midpoint-bounces@lists.evolveum.com"
moz-do-not-send="true">
<midpoint-bounces@lists.evolveum.com></a> <b>On
Behalf Of </b>Paul Caskey via midPoint<br>
<b>Sent:</b> Friday, August 18, 2023 8:18 AM<br>
<b>To:</b> midPoint General Discussion <a
href="mailto:midpoint@lists.evolveum.com"
moz-do-not-send="true">
<midpoint@lists.evolveum.com></a><br>
<b>Cc:</b> Paul Caskey <a
href="mailto:pcaskey@internet2.edu"
moz-do-not-send="true"><pcaskey@internet2.edu></a>;
Pavol Mederly
<a href="mailto:mederly@evolveum.com"
moz-do-not-send="true"><mederly@evolveum.com></a><br>
<b>Subject:</b> Re: [midPoint] bulk action task for
removing assignment<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">I was not able to get the user filter
to work. Tips or an example would be much appreciated!<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Also, I was running this in an
iterative task. This latest crash happen after only 3
minutes, but I asked the UI to do something and that
caused it to crash.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue
1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> midPoint <<a
href="mailto:midpoint-bounces@lists.evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">midpoint-bounces@lists.evolveum.com</a>>
<b>On Behalf Of </b>Pavol Mederly via midPoint<br>
<b>Sent:</b> Friday, August 18, 2023 8:15 AM<br>
<b>To:</b> <a
href="mailto:midpoint@lists.evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">midpoint@lists.evolveum.com</a><br>
<b>Cc:</b> Pavol Mederly <<a
href="mailto:mederly@evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">mederly@evolveum.com</a>><br>
<b>Subject:</b> Re: [midPoint] bulk action task
for removing assignment<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p>Hello Paul,<o:p></o:p></p>
<p>actually I wanted to write you about this, but I
didn't want to bother you with details. :)<o:p></o:p></p>
<p>You need two filters here:<o:p></o:p></p>
<ol type="1" start="1">
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3
level1 lfo3">
one to select the users with relevant assignments to
be deleted<o:p></o:p></li>
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3
level1 lfo3">
second to select relevant assignments from each user
found<o:p></o:p></li>
</ol>
<p>The first filter is more or less the one you
originally wrote (except for equals vs ref issue).<o:p></o:p></p>
<p>The second one is OK in your update.<o:p></o:p></p>
<p>Two more comments:<o:p></o:p></p>
<ol type="1" start="1">
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2
level1 lfo6">
In modern midPoint versions the filters could be
written using midPoint query language (aka Axiom).<o:p></o:p></li>
<li class="MsoNormal"
style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2
level1 lfo6">
The bulk action is best to be run within iterative
scripting task; that would prevent heap space
problems even if unoptimized (second-query-only)
action would be written.<o:p></o:p></li>
</ol>
<p>Hope this helps. :)<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Pavol Mederly<o:p></o:p></pre>
<pre>Software developer<o:p></o:p></pre>
<pre>evolveum.com<o:p></o:p></pre>
<div>
<p class="MsoNormal">On 18/08/2023 15:05, Paul Caskey
via midPoint wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Is there anyway to place limits
on the bulk action task below?<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">It crashes midpoint completely
within about an hour, forcing a hard reboot (version
4.7.1).<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">This was the error:<o:p></o:p></p>
<p class="MsoNormal">Couldn't execute script:
com.evolveum.midpoint.util.exception.ScriptExecutionException:
Couldn't execute action 'unassign' on
POV:user:1fb687f6-028e-4758-a877-3a6b932b1097(<a
href="mailto:someone@somedomain.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">someone@somedomain.com</a>):
Java heap space<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue
1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> midPoint <a
href="mailto:midpoint-bounces@lists.evolveum.com"
moz-do-not-send="true">
<midpoint-bounces@lists.evolveum.com></a>
<b>On Behalf Of </b>Paul Caskey via midPoint<br>
<b>Sent:</b> Thursday, August 17, 2023 2:03 PM<br>
<b>To:</b> midPoint General Discussion <a
href="mailto:midpoint@lists.evolveum.com"
moz-do-not-send="true">
<midpoint@lists.evolveum.com></a><br>
<b>Cc:</b> Paul Caskey <a
href="mailto:pcaskey@internet2.edu"
moz-do-not-send="true"><pcaskey@internet2.edu></a>;
Pavol Mederly
<a href="mailto:mederly@evolveum.com"
moz-do-not-send="true"><mederly@evolveum.com></a><br>
<b>Subject:</b> Re: [midPoint] bulk action
task for removing assignment<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Thanks, Pavol!<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">For the benefit of the list,
here is the bulk action script which will remove
all OrgType assignments from all users:<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><s:search xmlns:s=<a
href="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://midpoint.evolveum.com/xml/ns/public/model/scripting-3</a><o:p></o:p></p>
<p class="MsoNormal"> xmlns:q=<a
href="http://prism.evolveum.com/xml/ns/public/query-3"
moz-do-not-send="true"
class="moz-txt-link-freetext">http://prism.evolveum.com/xml/ns/public/query-3</a>><o:p></o:p></p>
<p class="MsoNormal">
<s:type>UserType</s:type><o:p></o:p></p>
<p class="MsoNormal"> <s:unassign><o:p></o:p></p>
<p class="MsoNormal"> <s:filter><o:p></o:p></p>
<p class="MsoNormal"> <q:ref><o:p></o:p></p>
<p class="MsoNormal">
<q:path>targetRef</q:path><o:p></o:p></p>
<p class="MsoNormal"> <q:value
type="OrgType"/><o:p></o:p></p>
<p class="MsoNormal"> </q:ref><o:p></o:p></p>
<p class="MsoNormal"> </s:filter><o:p></o:p></p>
<p class="MsoNormal"> </s:unassign><o:p></o:p></p>
<p class="MsoNormal"></s:search><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue
1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> midPoint
<<a
href="mailto:midpoint-bounces@lists.evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">midpoint-bounces@lists.evolveum.com</a>>
<b>On Behalf Of </b>Pavol Mederly via
midPoint<br>
<b>Sent:</b> Thursday, August 17, 2023 1:35
PM<br>
<b>To:</b> <a
href="mailto:midpoint@lists.evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">midpoint@lists.evolveum.com</a><br>
<b>Cc:</b> Pavol Mederly <<a
href="mailto:mederly@evolveum.com"
moz-do-not-send="true"
class="moz-txt-link-freetext">mederly@evolveum.com</a>><br>
<b>Subject:</b> Re: [midPoint] bulk action
task for removing assignment<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"> <o:p></o:p></p>
<p>Hello Paul,<o:p></o:p></p>
<p>this is a quirk from the prehistory of
midPoint: references are not filtered using
q:equal but using q:ref.<o:p></o:p></p>
<p>Furthermore, you may eliminate custom coding by
using "unassign" action that provides a filter
for assigments to be removed.<o:p></o:p></p>
<p>See e.g. <a
href="https://github.com/Evolveum/midpoint/blob/75e549f2e5ce52ab4b008c18e2e7ba8b2072e151/model/model-intest/src/test/resources/scripting/unassign-captain-from-jack.xml#L18-L26"
moz-do-not-send="true"
class="moz-txt-link-freetext">
https://github.com/Evolveum/midpoint/blob/75e549f2e5ce52ab4b008c18e2e7ba8b2072e151/model/model-intest/src/test/resources/scripting/unassign-captain-from-jack.xml#L18-L26</a>
for an example.<o:p></o:p></p>
<p>Hope this helps. No guarantees, though. :)<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Pavol Mederly<o:p></o:p></pre>
<pre>Software developer<o:p></o:p></pre>
<pre>evolveum.com<o:p></o:p></pre>
<div>
<p class="MsoNormal">On 17/08/2023 17:03, Paul
Caskey via midPoint wrote:<o:p></o:p></p>
</div>
<blockquote
style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">I am trying to remove all
user assignments to OrgType objects in a bulk
action task but am having trouble.<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">I think I have the filter
correct, but I’m having trouble with the
script when it tries to examine the type on a
given assignment (to prepare it for deletion).<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">This is the filter:<o:p></o:p></p>
<p class="MsoNormal">
<q:filter><o:p></o:p></p>
<p class="MsoNormal">
<q:equal><o:p></o:p></p>
<p class="MsoNormal">
<q:path>assignment/targetRef</q:path><o:p></o:p></p>
<p class="MsoNormal">
<q:value type="OrgType" /><o:p></o:p></p>
<p class="MsoNormal">
</q:equal><o:p></o:p></p>
<p class="MsoNormal">
</q:filter><o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">And this is the first part
of the script that checks the assignment for a
user:<o:p></o:p></p>
<p class="MsoNormal">
UserType user = input as UserType<o:p></o:p></p>
<p class="MsoNormal">
for (AssignmentType assignment :
user.getAssignment()) {<o:p></o:p></p>
<p class="MsoNormal">
if (aassignment.targetRef.type == 'OrgType') {<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">The error I am getting is:<o:p></o:p></p>
<p class="MsoNormal">class
com.evolveum.midpoint.prism.impl.PrismReferenceValueImpl
cannot be cast to class
com.evolveum.midpoint.prism.PrismPropertyValue
(com.evolveum.midpoint.prism.impl.PrismReferenceValueImpl and
com.evolveum.midpoint.prism.PrismPropertyValue
are in unnamed module of loader
org.springframework.boot.loader.LaunchedURLClassLoader
@2e0fa5d3)<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Thanks in advance for any
help!<o:p></o:p></p>
<p class="MsoNormal">-Paul<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"
style="margin-bottom:12.0pt"> <o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>midPoint mailing list<o:p></o:p></pre>
<pre><a href="mailto:midPoint@lists.evolveum.com" moz-do-not-send="true" class="moz-txt-link-freetext">midPoint@lists.evolveum.com</a><o:p></o:p></pre>
<pre><a href="https://lists.evolveum.com/mailman/listinfo/midpoint" moz-do-not-send="true" class="moz-txt-link-freetext">https://lists.evolveum.com/mailman/listinfo/midpoint</a><o:p></o:p></pre>
</blockquote>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"> <o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>midPoint mailing list<o:p></o:p></pre>
<pre><a href="mailto:midPoint@lists.evolveum.com" moz-do-not-send="true" class="moz-txt-link-freetext">midPoint@lists.evolveum.com</a><o:p></o:p></pre>
<pre><a href="https://lists.evolveum.com/mailman/listinfo/midpoint" moz-do-not-send="true" class="moz-txt-link-freetext">https://lists.evolveum.com/mailman/listinfo/midpoint</a><o:p></o:p></pre>
</blockquote>
</div>
</div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>midPoint mailing list<o:p></o:p></pre>
<pre><a href="mailto:midPoint@lists.evolveum.com" moz-do-not-send="true" class="moz-txt-link-freetext">midPoint@lists.evolveum.com</a><o:p></o:p></pre>
<pre><a href="https://lists.evolveum.com/mailman/listinfo/midpoint" moz-do-not-send="true" class="moz-txt-link-freetext">https://lists.evolveum.com/mailman/listinfo/midpoint</a><o:p></o:p></pre>
</blockquote>
</div>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
midPoint mailing list
<a class="moz-txt-link-abbreviated" href="mailto:midPoint@lists.evolveum.com">midPoint@lists.evolveum.com</a>
<a class="moz-txt-link-freetext" href="https://lists.evolveum.com/mailman/listinfo/midpoint">https://lists.evolveum.com/mailman/listinfo/midpoint</a>
</pre>
</blockquote>
</body>
</html>