[midPoint] bulk action task for removing assignment
Paul Caskey
pcaskey at internet2.edu
Fri Aug 18 16:51:23 CEST 2023
Thank you, Pavol!!
When I grow up, I want to know midPoint as well as you do (or maybe even half as well)! :)
From: midPoint <midpoint-bounces at lists.evolveum.com> On Behalf Of Pavol Mederly via midPoint
Sent: Friday, August 18, 2023 9:48 AM
To: midpoint at lists.evolveum.com
Cc: Pavol Mederly <mederly at evolveum.com>
Subject: Re: [midPoint] bulk action task for removing assignment
Hello Paul,
just to propagate new features of midPoint, let me improve your solution a little bit :)
<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"<http://midpoint.evolveum.com/xml/ns/public/common/common-3>
xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3"<http://prism.evolveum.com/xml/ns/public/query-3>
xmlns:s="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"<http://midpoint.evolveum.com/xml/ns/public/model/scripting-3>
oid="41d8abfc-df45-4d6d-a44a-2fecd84e2813">
<name>removing-org-assignments</name>
<executionState>runnable</executionState>
<activity>
<work>
<iterativeScripting>
<objects>
<type>UserType</type>
<query> <!-- to process only relevant users -->
<q:filter>
<q:text>assignment/targetRef matches (targetType = OrgType)</q:text>
</q:filter>
</query>
</objects>
<scriptExecutionRequest>
<s:unassign>
<s:filter>
<q:text>targetRef matches (targetType = OrgType)</q:text>
</s:filter>
</s:unassign>
</scriptExecutionRequest>
</iterativeScripting>
</work>
</activity>
</task>
Note the textual representation of filters, see MidPoint Query Language<https://docs.evolveum.com/midpoint/reference/concepts/query/axiom-query-language/> 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...
Also, note the <iterativeScripting> that provides less memory usage (in some cases), multi-node/multithreading ability, reporting, error control, and many many others ...
All the best,
--
Pavol Mederly
Software developer
evolveum.com
On 18/08/2023 16:24, Paul Caskey via midPoint wrote:
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!
For the record, here is the complete <activity> section of the iterative task:
<activity>
<work>
<nonIterativeScripting>
<scriptExecutionRequest xmlns:s="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"<http://midpoint.evolveum.com/xml/ns/public/model/scripting-3>>
<s:search>
<s:type>UserType</s:type>
<s:query>
<q:filter>
<q:ref>
<q:path>assignment/targetRef</q:path>
<q:value type="OrgType" />
</q:ref>
</q:filter>
</s:query>
<s:unassign>
<s:filter>
<q:ref>
<q:path>targetRef</q:path>
<q:value xmlns="">
<type>OrgType</type>
</q:value>
</q:ref>
</s:filter>
</s:unassign>
</s:search>
</scriptExecutionRequest>
</nonIterativeScripting>
</work>
</activity>
From: midPoint <midpoint-bounces at lists.evolveum.com><mailto:midpoint-bounces at lists.evolveum.com> On Behalf Of Paul Caskey via midPoint
Sent: Friday, August 18, 2023 8:18 AM
To: midPoint General Discussion <midpoint at lists.evolveum.com><mailto:midpoint at lists.evolveum.com>
Cc: Paul Caskey <pcaskey at internet2.edu><mailto:pcaskey at internet2.edu>; Pavol Mederly <mederly at evolveum.com><mailto:mederly at evolveum.com>
Subject: Re: [midPoint] bulk action task for removing assignment
I was not able to get the user filter to work. Tips or an example would be much appreciated!
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.
From: midPoint <midpoint-bounces at lists.evolveum.com<mailto:midpoint-bounces at lists.evolveum.com>> On Behalf Of Pavol Mederly via midPoint
Sent: Friday, August 18, 2023 8:15 AM
To: midpoint at lists.evolveum.com<mailto:midpoint at lists.evolveum.com>
Cc: Pavol Mederly <mederly at evolveum.com<mailto:mederly at evolveum.com>>
Subject: Re: [midPoint] bulk action task for removing assignment
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<mailto:someone at somedomain.com>): Java heap space
From: midPoint <midpoint-bounces at lists.evolveum.com><mailto: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><mailto:midpoint at lists.evolveum.com>
Cc: Paul Caskey <pcaskey at internet2.edu><mailto:pcaskey at internet2.edu>; Pavol Mederly <mederly at evolveum.com><mailto: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<mailto: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<mailto:midpoint at lists.evolveum.com>
Cc: Pavol Mederly <mederly at evolveum.com<mailto: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<mailto:midPoint at lists.evolveum.com>
https://lists.evolveum.com/mailman/listinfo/midpoint
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com<mailto:midPoint at lists.evolveum.com>
https://lists.evolveum.com/mailman/listinfo/midpoint
_______________________________________________
midPoint mailing list
midPoint at lists.evolveum.com<mailto: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/82c45eaf/attachment-0001.htm>
More information about the midPoint
mailing list