[midPoint] How to not create an assignment that already exists but is indirect / induced ?

Alcides Moraes alcides.neto at gmail.com
Mon Jan 15 20:58:22 CET 2024


Nevermind, that change was only showing on the “Show changes” page, I guess it makes sense that roleMembershipRef is never written there. Possible bug here?

So that works! I check if the role.oid is in roleMembershipRef but not in the focus assignments, and thus return the null value for it, so it is not created.

Thanks!

> Em 15 de jan. de 2024, à(s) 16:16, Alcides Moraes <alcides.neto at gmail.com> escreveu:
> 
> Hello Fabian,
> 
> Thanks for your reply, roleMembershipRef seems to be just what I needed, since it contains all the induced roles.
> 
> However, during the assignment process, roleMembershipRef still does not contain the value of the new assignment, and midpoint is being a little too efficient and checking the inbound mappings even before writing to the resource.
> 
> So, when I assign a role that induces another role that has projection to the resource, the inbound mapping is already being evaluated and creating the direct assignment in one swoop.
> 
> Is there maybe a way to stop midpoint from evaluating inbound mappings so soon?  
> Or another approach to all this that I’m missing?
> 
> Thanks again for your help.
> 
>> Em 12 de jan. de 2024, à(s) 05:44, Fabian Noll-Dukiewicz <fabian.noll-dukiewicz at veryfy.gmbh> escreveu:
>> 
>> Hi,
>>  
>> I don’t know how to check for indirect assignments, but as workaround you can check which assignments the user already has. I use the function “focus.getRoleMembershipRef()” in objectTemplate to check if the user has a specific assignment. I think it is also possible to use this function in mapping condition in your resource configuration.
>>  
>> Please let me know if you need some further information.
>>  
>> Kind regards,
>> Fabian
>>  
>> --
>> Fabian Noll-Dukiewicz
>> Spezialist Identity & Access Management | Geschäftsführer
>> Tel.: +49 152 244 63 211
>> Email: fabian.noll-dukiewicz at veryfy.gmbh <mailto:fabian.noll-dukiewicz at veryfy.gmbh>
>> Web: https://veryfy.gmbh <https://veryfy.gmbh/>  
>>  
>>  
>> Von: midPoint <midpoint-bounces at lists.evolveum.com> im Auftrag von Alcides Moraes via midPoint <midpoint at lists.evolveum.com>
>> Datum: Mittwoch, 10. Januar 2024 um 23:56
>> An: midPoint General Discussion <midpoint at lists.evolveum.com>
>> Cc: Alcides Moraes <alcides.neto at gmail.com>
>> Betreff: [midPoint] How to not create an assignment that already exists but is indirect / induced ?
>> 
>> Hello list,
>>  
>> TL;DR - Is there a way to check for indirect assignments in groovy script expressions?
>>  
>> Now for the full use case:
>>  
>> We have a resource with a custom in-house connector that is working well for direct assignments.
>> There are inbound / outbound mappings to create the assignments given in midpoint and in the resource directly, both ways.
>>  
>> However, if I give an indirect assignment to an object from midpoint, midpoint also processes the inbound mapping afterwards and then also creates the direct assignment in midpoint as well. 
>> How should I filter this? I thought about creating a set condition in the mapping, that would check for indirect assignment, but I don’t think there’s a function for this? Midpoint script library has a isDirectlyAssigned function only.
>>  
>> I should note that I’m not using an association mapping, because I need to populate the assignment with additional fields (like orgRef for example), and I don’t think I’m able to do this with the association/assignmentTargetSearch approach, so I’m using standard attribute/inbound mapping and create the assignment there.
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.evolveum.com/pipermail/midpoint/attachments/20240115/dcc9d18c/attachment.htm>


More information about the midPoint mailing list