diff --git a/demo/complex2s/midpoint-objects/functionLibraries/function-library-grouper.xml b/demo/complex2s/midpoint-objects/functionLibraries/function-library-grouper.xml index 80197aa..6219eb0 100644 --- a/demo/complex2s/midpoint-objects/functionLibraries/function-library-grouper.xml +++ b/demo/complex2s/midpoint-objects/functionLibraries/function-library-grouper.xml @@ -1,17 +1,8 @@ + + User Template @@ -21,13 +28,13 @@ memberDef = prismContext.definitionFactory().createPropertyDefinition(MEMBER_NAME, DOMUtil.XSD_STRING) memberDef.setMaxOccurs(-1) - - // TODO check for exists/dead + shadowQuery = prismContext.queryFor(ShadowType.class) .item(ShadowType.F_RESOURCE_REF).ref(GROUPER_RESOURCE_OID) .and().item(ShadowType.F_SYNCHRONIZATION_SITUATION).eq(SynchronizationSituationType.LINKED) .and().item(ShadowType.F_KIND).eq(ShadowKindType.ENTITLEMENT) .and().item(ShadowType.F_INTENT).eq('group') + .and().block().item(ShadowType.F_DEAD).isNull().or().item(ShadowType.F_DEAD).eq(false).endBlock() .and().item(ItemPath.create(ShadowType.F_ATTRIBUTES, MEMBER_NAME), memberDef).eq(basic.stringify(name)) .build() diff --git a/demo/complex2s/midpoint-objects/orgs/org-affiliations.xml b/demo/complex2s/midpoint-objects/orgs/org-affiliations.xml index 618f9ee..577c894 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-affiliations.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-affiliations.xml @@ -1,4 +1,11 @@ + + affiliations diff --git a/demo/complex2s/midpoint-objects/orgs/org-courses.xml b/demo/complex2s/midpoint-objects/orgs/org-courses.xml index 71d1f7e..47147d5 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-courses.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-courses.xml @@ -1,4 +1,11 @@ + + courses diff --git a/demo/complex2s/midpoint-objects/orgs/org-departments.xml b/demo/complex2s/midpoint-objects/orgs/org-departments.xml index 5320c1e..b5638d4 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-departments.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-departments.xml @@ -1,4 +1,11 @@ + + departments diff --git a/demo/complex2s/midpoint-objects/orgs/org-generic-groups.xml b/demo/complex2s/midpoint-objects/orgs/org-generic-groups.xml index fa39bbc..baa2c79 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-generic-groups.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-generic-groups.xml @@ -1,4 +1,11 @@ + + generic-groups diff --git a/demo/complex2s/midpoint-objects/orgs/org-grouper-sysadmin.xml b/demo/complex2s/midpoint-objects/orgs/org-grouper-sysadmin.xml index a748ebe..201777a 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-grouper-sysadmin.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-grouper-sysadmin.xml @@ -1,12 +1,11 @@ - + + org-grouper-sysadmin Grouper Administrators diff --git a/demo/complex2s/midpoint-objects/orgs/org-mailing-lists.xml b/demo/complex2s/midpoint-objects/orgs/org-mailing-lists.xml index 136c3ee..6674745 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-mailing-lists.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-mailing-lists.xml @@ -1,4 +1,11 @@ + + mailing-lists diff --git a/demo/complex2s/midpoint-objects/orgs/org-midpoint-groups.xml b/demo/complex2s/midpoint-objects/orgs/org-midpoint-groups.xml index 5bb3a7f..9c0658d 100644 --- a/demo/complex2s/midpoint-objects/orgs/org-midpoint-groups.xml +++ b/demo/complex2s/midpoint-objects/orgs/org-midpoint-groups.xml @@ -1,4 +1,11 @@ + + midpoint-groups diff --git a/demo/complex2s/midpoint-objects/resources/ldap-main.xml b/demo/complex2s/midpoint-objects/resources/ldap-main.xml index 66a66dd..09934db 100644 --- a/demo/complex2s/midpoint-objects/resources/ldap-main.xml +++ b/demo/complex2s/midpoint-objects/resources/ldap-main.xml @@ -1,13 +1,10 @@ - - + 0 false - mr:stringIgnoreCase + mr:distinguishedName strong @@ -201,7 +198,7 @@ - http://prism.evolveum.com/xml/ns/public/matching-rule-3#stringIgnoreCase + http://prism.evolveum.com/xml/ns/public/matching-rule-3#distinguishedName attributes/ri:dn cn=root,dc=internet2,dc=edu @@ -226,7 +223,7 @@ ri:dn - mr:stringIgnoreCase + mr:distinguishedName strong @@ -244,6 +241,11 @@ + + ri:uniqueMember + mr:distinguishedName + minimal + diff --git a/demo/complex2s/midpoint-objects/resources/resource-grouper.xml b/demo/complex2s/midpoint-objects/resources/resource-grouper.xml index 125961e..f21c797 100644 --- a/demo/complex2s/midpoint-objects/resources/resource-grouper.xml +++ b/demo/complex2s/midpoint-objects/resources/resource-grouper.xml @@ -1,18 +1,9 @@ deleted - - http://midpoint.evolveum.com/xml/ns/public/model/action-3#deleteFocus - + + + true unlinked diff --git a/demo/complex2s/midpoint-objects/resources/scriptedsql-sis-persons.xml b/demo/complex2s/midpoint-objects/resources/scriptedsql-sis-persons.xml index d95d39e..e47a0a7 100644 --- a/demo/complex2s/midpoint-objects/resources/scriptedsql-sis-persons.xml +++ b/demo/complex2s/midpoint-objects/resources/scriptedsql-sis-persons.xml @@ -1,6 +1,13 @@ - + + + + + + +displayName + + + lifecycle state + This mapping sets org lifecycle state to be either "active" or "retired", depending on + whether Grouper group for this org still exists. Orgs in the latter state are on the way to deletion: + their members are unassigned and after no members are there, the org is automatically deleted. + strong + + + + + lifecycleState + + + + + + - SystemConfiguration - - - + + + SystemConfiguration + + + ERROR ro.isdc.wro.extensions.processor.css.Less4jProcessor - - + + OFF org.hibernate.engine.jdbc.spi.SqlExceptionHelper - - + + OFF org.hibernate.engine.jdbc.batch.internal.BatchingBatch - - + + WARN org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl - - + + OFF org.hibernate.internal.ExceptionMapperStandardImpl - - + + OFF net.sf.jasperreports.engine.fill.JRFillDataset - - + + WARN org.apache.wicket.resource.PropertiesFactory - - + + ERROR org.springframework.context.support.ResourceBundleMessageSource - - + + INFO com.evolveum.midpoint.model.impl.lens.projector.Projector - - + + INFO com.evolveum.midpoint.model.impl.lens.Clockwork - - + + %date [%X{subsystem}] [%thread] %level \(%logger\): %msg%n MIDPOINT_LOG ${midpoint.home}/log/midpoint.log @@ -117,8 +57,8 @@ 10 100MB true - - + + %date %level: %msg%n MIDPOINT_PROFILE_LOG ${midpoint.home}/log/midpoint-profile.log @@ -126,97 +66,106 @@ 10 100MB true - - MIDPOINT_LOG - INFO - + + MIDPOINT_LOG + INFO + false
false
-
-
- - UserType - - - - + + + + UserType + + + + OrgType + + + retired + + + + + + P3M - - + + P1M - - - - true - - true - - - true - true - - - true - true - - - true - - - - true - - - perCacheAndObjectType - - - - 60 - - SystemConfigurationType - ArchetypeType - ObjectTemplateType - SecurityPolicyType - ValuePolicyType - ResourceType - RoleType - OrgType - ServiceType - ShadowType - - - perCacheAndObjectType - - - - - - + + + + true + + true + + + true + true + + + true + true + + + true + + + + true + + + perCacheAndObjectType + + + + 60 + + SystemConfigurationType + ArchetypeType + ObjectTemplateType + SecurityPolicyType + ValuePolicyType + ResourceType + RoleType + OrgType + ServiceType + ShadowType + + + perCacheAndObjectType + + + + + + perOperationAndObjectType - - - - performance - Performance tracing - true - true - performance-trace %{timestamp} %{focusName} %{milliseconds} - true - true - - - functional - Functional tracing - true - functional-trace %{timestamp} %{focusName} - true - true - true - - normal - - + + + + performance + Performance tracing + true + true + performance-trace %{timestamp} %{focusName} %{milliseconds} + true + true + + + functional + Functional tracing + true + functional-trace %{timestamp} %{focusName} + true + true + true + + normal + + functional-model-logging Functional tracing (with model logging) @@ -253,52 +202,56 @@ normal - - - - demo/complex2s - - - + + + + demo/complex2s + + + /self/profile View/edit your profile - fa fa-user + fa fa-user green http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfProfile http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll - - + + /self/credentials View/edit your credentials - fa fa-shield + fa fa-shield blue http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfCredentials http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#selfAll - - + + /admin/users - fa fa-users + fa fa-users red http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#users - - + + /admin/resources - fa fa-database + fa fa-database purple http://midpoint.evolveum.com/xml/ns/public/security/authorization-ui-3#resources - - true - - + + true + + + never + never + + diff --git a/demo/complex2s/midpoint-objects/tasks/task-group-scavenger.xml b/demo/complex2s/midpoint-objects/tasks/task-group-scavenger.xml new file mode 100644 index 0000000..60f9852 --- /dev/null +++ b/demo/complex2s/midpoint-objects/tasks/task-group-scavenger.xml @@ -0,0 +1,85 @@ + + + + + + + Group Scavenger + + + + execute-script + + script + + import com.evolveum.midpoint.xml.ns._public.common.common_3.* + + result = midpoint.currentResult + log.info('Processing dead group: {}', input) + query = prismContext.queryFor(UserType.class) + .item(UserType.F_ROLE_MEMBERSHIP_REF).ref(input.oid) + .build() + members = midpoint.repositoryService.searchObjects(UserType.class, query, null, result) + log.info('Found {} members: {}', members.size(), members) + + for (member in members) { + log.info('Going to recompute {}', member) + try { + midpoint.recompute(UserType.class, member.oid) + } catch (Throwable t) { + log.error('Couldn\'t recompute {}: {}', member, t.message, t) + } + } + log.info('Members recomputed; checking if the org is still in "retired" state') + orgAfter = midpoint.repositoryService.getObject(OrgType.class, input.oid, null, result) + currentState = orgAfter.asObjectable().lifecycleState + log.info('Current state = {}', currentState) + if (currentState == 'retired') { + log.info('Deleting the org: {}', orgAfter) + midpoint.deleteObject(OrgType.class, orgAfter.oid, null) + } else { + log.info('State has changed, not deleting the org: {}', orgAfter) + } + log.info('Dead group processing done: {}', input) + + + + + + OrgType + + + + lifecycleState + retired + + + + + + runnable + BulkActions + http://midpoint.evolveum.com/xml/ns/public/model/iterative-scripting/handler-3 + recurring + + 60 + + diff --git a/demo/complex2s/midpoint-objects/users/user-banderson.xml b/demo/complex2s/midpoint-objects/users/user-banderson.xml index 6ef2563..10197ea 100644 --- a/demo/complex2s/midpoint-objects/users/user-banderson.xml +++ b/demo/complex2s/midpoint-objects/users/user-banderson.xml @@ -1,4 +1,11 @@ - + +