<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">Hello Markus,<div><br></div><div>We have a task that runs daily and deletes assignments to deleted objects</div><div><br></div><div>Here’s the groovy script we use:</div><div><br></div><div><div style="background-color: rgb(43, 43, 43); color: rgb(169, 183, 198);"><pre style="font-family: "Fira Code", monospace;"><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">    </span><span style="background-color: rgb(54, 65, 53);">import com.evolveum.midpoint.xml.ns._public.common.common_3.*<br></span><span style="background-color: rgb(54, 65, 53);">    import com.evolveum.midpoint.prism.delta.builder.*<br></span><span style="background-color: rgb(54, 65, 53);">    import com.evolveum.midpoint.model.api.*<br></span><span style="background-color: rgb(54, 65, 53);">    import javax.xml.namespace.QName<br></span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">    def assignmentsToDelete = []</span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">    for (a in input.assignment) {<br></span><span style="background-color: rgb(54, 65, 53);">        if (a.targetRef != null) {<br></span><span style="background-color: rgb(54, 65, 53);">            def ot = midpoint.resolveReferenceIfExists(a.targetRef)<br></span><span style="background-color: rgb(54, 65, 53);">            if (ot == null) {<br></span><span style="background-color: rgb(54, 65, 53);">                def removeAssignment = new AssignmentType()<br></span><span style="background-color: rgb(54, 65, 53);">                removeAssignment.id = a.id<br></span><span style="background-color: rgb(54, 65, 53);">                assignmentsToDelete.add removeAssignment.asPrismContainerValue()<br></span><span style="background-color: rgb(54, 65, 53);">            }<br></span><span style="background-color: rgb(54, 65, 53);">        }<br></span><span style="background-color: rgb(54, 65, 53);">    }<br></span><span style="background-color: rgb(54, 65, 53);">    if (!assignmentsToDelete.empty) {</span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">        def delta = prismContext.deltaFor(FocusType.class).item(FocusType.F_ASSIGNMENT).delete(assignmentsToDelete).asObjectDelta(input.oid)</span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">        midpoint.modifyObject(delta, ModelExecuteOptions.createRaw())</span><span style="background-color: rgb(54, 65, 53);"><br></span><span style="background-color: rgb(54, 65, 53);">    }</span></pre></div><div><br><blockquote type="cite"><div>Em 10 de jan. de 2024, à(s) 11:50, Markus Calmius via midPoint <midpoint@lists.evolveum.com> escreveu:</div><br class="Apple-interchange-newline"><div><div style="font-family: Arial, sans-serif; font-size: 14px;">Hi,</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">is it possible, and if so, can anyone guide me on how to unassign all roles (or orgs) that has been deleted*. </div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">I've been trying to use the bulk script actions, but I cannot figure out how to figure out how to compose the filter.</div><div style="font-family: Arial, sans-serif; font-size: 14px;">All my tests end up with either a stack-trace or "<span>There are no roles nor resources to unassign and no filter is specified</span>"</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">What I got working was the example:</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><s:action></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><span>    </span><s:type>unassign</s:type></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><span>    </span><s:parameter></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><span>        </span><s:name>role</s:name></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><span>        </span><c:value xsi:type="xsd:string”>OID</c:value></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"><span>    </span></s:parameter></div><div style="margin: 0px; font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 13px; line-height: normal; font-family: Courier; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; color: rgb(209, 28, 36); background-color: rgb(252, 244, 220);"></s:action></div>But that take one OID, and... I need to have at least a list, but preferably something even smarter.</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">I tried to do something like this:</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><pre><code data-lang="xml"></code></pre><div style="color: rgb(88, 110, 117); background-color: rgb(253, 246, 227);"><pre style="font-family:'JetBrains Mono',monospace;font-size:9.8pt"><span style="color: rgb(147, 161, 161);"><</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:action</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">    <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:type</span><span style="color: rgb(147, 161, 161);">></span>unassign<span style="color: rgb(147, 161, 161);"></</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:type</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">    <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:parameter</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">        <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:name</span><span style="color: rgb(147, 161, 161);">></span>filter<span style="color: rgb(147, 161, 161);"></</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:name</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">        <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:searchFilter</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">            <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:inOid</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">                <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:value</span><span style="color: rgb(147, 161, 161);">></span>fef34a49-f7d4-4a68-97ee-cb240fe13022<span style="color: rgb(147, 161, 161);"></</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:value</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">                <</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:value</span><span style="color: rgb(147, 161, 161);">></span>f379d31e-6990-4226-8007-932b9676a8ff<span style="color: rgb(147, 161, 161);"></</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:value</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">            </</span><span style="font-weight: bold; color: rgb(108, 113, 196);">q</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:inOid</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">        </</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:searchFilter</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);">    </</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:parameter</span><span style="color: rgb(147, 161, 161);">><br></span><span style="color: rgb(147, 161, 161);"></</span><span style="font-weight: bold; color: rgb(108, 113, 196);">s</span><span style="font-weight: bold; color: rgb(38, 139, 210);">:action</span><span style="color: rgb(147, 161, 161);">><br></span></pre></div>But cannot get any thing to work.</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">Anyway, any pointers is greatly appreciated.</div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div><div style="font-family: Arial, sans-serif; font-size: 14px;">* I know there is a message saying this role/org has members, do you still want to etc. </div><div style="font-family: Arial, sans-serif; font-size: 14px;"><br></div>
<div class="protonmail_signature_block" style="font-family: Arial, sans-serif; font-size: 14px;">
    <div class="protonmail_signature_block-user">
        Markus</div>
    
            <div class="protonmail_signature_block-proton protonmail_signature_block-empty">
        
            </div>
</div>
_______________________________________________<br>midPoint mailing list<br>midPoint@lists.evolveum.com<br>https://lists.evolveum.com/mailman/listinfo/midpoint<br></div></blockquote></div><br></div></body></html>