[midPoint] bulk action task for removing assignment

Pavol Mederly mederly at evolveum.com
Fri Aug 18 15:14:55 CEST 2023


Hello Paul,

actually I wanted to write you about this, but I didn't want to bother 
you with details. :)

You need two filters here:

 1. one to select the users with relevant assignments to be deleted
 2. second to select relevant assignments from each user found

The first filter is more or less the one you originally wrote (except 
for equals vs ref issue).

The second one is OK in your update.

Two more comments:

 1. In modern midPoint versions the filters could be written using
    midPoint query language (aka Axiom).
 2. 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.

Hope this helps. :)

-- 
Pavol Mederly
Software developer
evolveum.com

On 18/08/2023 15:05, Paul Caskey via midPoint wrote:
>
> Is there anyway to place limits on the bulk action task below?
>
> It crashes midpoint completely within about an hour, forcing a hard 
> reboot (version 4.7.1).
>
> This was the error:
>
> Couldn't execute script: 
> com.evolveum.midpoint.util.exception.ScriptExecutionException: 
> Couldn't execute action 'unassign' on 
> POV:user:1fb687f6-028e-4758-a877-3a6b932b1097(someone at somedomain.com): 
> Java heap space
>
> *From:* midPoint <midpoint-bounces at lists.evolveum.com> *On Behalf Of 
> *Paul Caskey via midPoint
> *Sent:* Thursday, August 17, 2023 2:03 PM
> *To:* midPoint General Discussion <midpoint at lists.evolveum.com>
> *Cc:* Paul Caskey <pcaskey at internet2.edu>; Pavol Mederly 
> <mederly at evolveum.com>
> *Subject:* Re: [midPoint] bulk action task for removing assignment
>
> Thanks, Pavol!
>
> For the benefit of the list, here is the bulk action script which will 
> remove all OrgType assignments from all users:
>
> <s:search 
> xmlns:s=http://midpoint.evolveum.com/xml/ns/public/model/scripting-3
>
>           xmlns:q=http://prism.evolveum.com/xml/ns/public/query-3>
>
>     <s:type>UserType</s:type>
>
>     <s:unassign>
>
>         <s:filter>
>
>             <q:ref>
>
> <q:path>targetRef</q:path>
>
>                 <q:value type="OrgType"/>
>
>             </q:ref>
>
>         </s:filter>
>
>     </s:unassign>
>
> </s:search>
>
> *From:* midPoint <midpoint-bounces at lists.evolveum.com> *On Behalf Of 
> *Pavol Mederly via midPoint
> *Sent:* Thursday, August 17, 2023 1:35 PM
> *To:* midpoint at lists.evolveum.com
> *Cc:* Pavol Mederly <mederly at evolveum.com>
> *Subject:* Re: [midPoint] bulk action task for removing assignment
>
> Hello Paul,
>
> this is a quirk from the prehistory of midPoint: references are not 
> filtered using q:equal but using q:ref.
>
> Furthermore, you may eliminate custom coding by using "unassign" 
> action that provides a filter for assigments to be removed.
>
> See e.g. 
> https://github.com/Evolveum/midpoint/blob/75e549f2e5ce52ab4b008c18e2e7ba8b2072e151/model/model-intest/src/test/resources/scripting/unassign-captain-from-jack.xml#L18-L26 
> for an example.
>
> Hope this helps. No guarantees, though. :)
>
> -- 
> Pavol Mederly
> Software developer
> evolveum.com
>
> On 17/08/2023 17:03, Paul Caskey via midPoint wrote:
>
>     I am trying to remove all user assignments to OrgType objects in a
>     bulk action task but am having trouble.
>
>     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).
>
>     This is the filter:
>
>     <q:filter>
>
>     <q:equal>
>
>     <q:path>assignment/targetRef</q:path>
>
>     <q:value type="OrgType" />
>
>     </q:equal>
>
>     </q:filter>
>
>     And this is the first part of the script that checks the
>     assignment for a user:
>
>     UserType user = input as UserType
>
>                                       for (AssignmentType assignment :
>     user.getAssignment()) {
>
>     if (aassignment.targetRef.type == 'OrgType') {
>
>     The error I am getting is:
>
>     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)
>
>     Thanks in advance for any help!
>
>     -Paul
>
>     _______________________________________________
>
>     midPoint mailing list
>
>     midPoint at lists.evolveum.com
>
>     https://lists.evolveum.com/mailman/listinfo/midpoint
>
>
> _______________________________________________
> midPoint mailing list
> midPoint at lists.evolveum.com
> https://lists.evolveum.com/mailman/listinfo/midpoint
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20230818/d7ea9aba/attachment-0001.htm>


More information about the midPoint mailing list