[midPoint] Writing a query using the ouput of an other query.

Tony Tkacik tony.tkacik at evolveum.com
Wed Jun 8 11:40:56 CEST 2022


Hi Sebastien, 
In your case since you use orgRef with scope ONE_LEVEL, this could be easily rewritten to ref filter with dereference (aka "JOIN", see for [ https://docs.evolveum.com/midpoint/reference/concepts/query/query-api/#special-symbols-in-item-paths | https://docs.evolveum.com/midpoint/reference/concepts/query/query-api/#special-symbols-in-item-paths ] ). 

The filter you are looking for is following: 

Object Type: UserType 
<query> 
<filter> 
<ref> 
<path>parentOrgRef/@/roleMembershipRef</path> 
<value oid="o id of the meta role " /> 
</ref> 
</filter> 
</query> 

Notice the path and @ symbol, in this case this means we are looking into parentOrgRef, the @ symbol represents dereference (aka use values from ref target) and now we can use roleMembershipRef in ref filter. 
This filter is translated into following hibernate query in Query Playground: 

select u.oid, u.fullObject from RUser u 
left join u.parentOrgRef p 
left join p.target t 
left join t.roleMembershipRef r 
where 
( 
r.targetOid = :targetOid and 
r.relation in (:relation) 
) 



I tested this filter on 4.0.4 and it works that it selects all users in organization units, which has assigned meta role. 
Hope this helps. 

Anton Tkacik 


From: "midPoint General Discussion" <midpoint at lists.evolveum.com> 
To: "midPoint General Discussion" <midpoint at lists.evolveum.com> 
Cc: "Sébastien MARBRIER" <smarbrier at positivethinking.tech> 
Sent: Tuesday, June 7, 2022 5:07:20 PM 
Subject: [midPoint] Writing a query using the ouput of an other query. 



Hello dear midpoint users. 



I need to list the users which are a members of organizations which are member of a given metarole. 

I can get the list of the organizations using this simple query in the query playground: 

Object type : OrgType 

<query> 

<filter> 

<ref> 

<path>roleMembershipRef</path> 

<value oid="oid of the meta role/> 

</ref> 

</filter> 

</query> 



I can also get of the users of such an organization using this other simple query: 

Object Type : UserType 

<query> 

<filter> 
<org> 
<orgRef> 
<oid>oid of an organization</oid> 
</orgRef> 
<scope>ONE_LEVEL</scope> 
</org> 
</filter> 
</query> 



However I am clueless how it is possible to mixing those two queries to automate the listing process. 

Doing this by hand is a bit too tedious because there too many organizations. 



Alternative suggestions are welcome. 

I am using a 4.0.1 version of midpoint. 



Best regards, 





[ https://www.positivethinking.tech/ ] 	

	

Sébastien Marbrier | Senior IT Consultant 
[ mailto:smarbrier at positivethinking.tech | smarbrier at positivethinking.tech ] 

Tel. +41 21 601 81 00 


[ https://teams.microsoft.com/l/chat/0/0?users=smarbrier@positivethinking.tech ] 	

[ https://teams.microsoft.com/l/chat/0/0?users=smarbrier@positivethinking.tech |   ] 	

[ https://teams.microsoft.com/l/chat/0/0?users=smarbrier@positivethinking.tech | Chat
 with me on Teams ] 






[ https://www.linkedin.com/company/the-positive-thinking-company/ ] [ https://www.instagram.com/positivethinkingcompany/ ] [ https://twitter.com/PTC_Tech ] [ https://youtube.com/channel/UCfaImWa6r0IoZoUYLhbiF7w ] 		

Avenue de cour, 135 – 1007 Lausanne 
[ https://www.positivethinking.tech/ | www.positivethinking.tech ] 












Positive Thinking Company puts security at a high priority in its conduct of business. Therefore, we have put our best efforts into ensuring that this email and its attached documents are error and virus-free. Nonetheless, full security of emails/documents cannot be ensured. Therefore, the recipient is responsible for checking the email/documents for threats with its own security measures, prior to opening it. Positive Thinking Company does not accept liability for any damage inflicted by using the content of this email/documents. If you are not the intended recipient, please notify the sender and delete this email/document. 


_______________________________________________ 
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/20220608/3df5469d/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 7735 bytes
Desc: image001.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0006.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 686 bytes
Desc: image002.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0007.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.png
Type: image/png
Size: 2337 bytes
Desc: image003.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0008.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image004.png
Type: image/png
Size: 2756 bytes
Desc: image004.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0009.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image005.png
Type: image/png
Size: 2358 bytes
Desc: image005.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0010.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image006.png
Type: image/png
Size: 2669 bytes
Desc: image006.png
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20220608/3df5469d/attachment-0011.png>


More information about the midPoint mailing list