<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hello Paul,</p>
    <p>actually I wanted to write you about this, but I didn't want to
      bother you with details. :)</p>
    <p>You need two filters here:</p>
    <ol>
      <li>one to select the users with relevant assignments to be
        deleted</li>
      <li>second to select relevant assignments from each user found</li>
    </ol>
    <p>The first filter is more or less the one you originally wrote
      (except for equals vs ref issue).</p>
    <p>The second one is OK in your update.</p>
    <p>Two more comments:</p>
    <ol>
      <li>In modern midPoint versions the filters could be written using
        midPoint query language (aka Axiom).</li>
      <li>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.</li>
    </ol>
    <p>Hope this helps. :)<br>
    </p>
    <pre class="moz-signature" cols="72">-- 
Pavol Mederly
Software developer
evolveum.com</pre>
    <div class="moz-cite-prefix">On 18/08/2023 15:05, Paul Caskey via
      midPoint wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:SN6PR08MB612684A9A8C414BA8B89E01FFF1BA@SN6PR08MB6126.namprd08.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        font-size:10.0pt;
        font-family:"Courier New";}span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}span.EmailStyle23
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}div.WordSection1
        {page:WordSection1;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <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 class="moz-txt-link-abbreviated" href="mailto:someone@somedomain.com">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 class="moz-txt-link-rfc2396E" href="mailto:midpoint-bounces@lists.evolveum.com"><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 class="moz-txt-link-rfc2396E" href="mailto:midpoint@lists.evolveum.com"><midpoint@lists.evolveum.com></a><br>
                <b>Cc:</b> Paul Caskey <a class="moz-txt-link-rfc2396E" href="mailto:pcaskey@internet2.edu"><pcaskey@internet2.edu></a>;
                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 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>
      </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>