[midPoint] Mapping error in object template.
Ivan Noris
ivan.noris at evolveum.com
Wed Sep 10 13:16:03 CEST 2014
Hi Deepak,
this is a long shot - but - do you have the same versions of your schema
extension files in both midpoints? (Was midpoint restarted after the
schema change?)
Regards,
Ivan
On 09/10/2014 01:09 PM, Deepak Natarajan wrote:
> Hi everyone -
>
> I have a mapping in a new user object template which works perfectly
> (well, correctly) on my local environment (non-windows, Tomcat 7+,
> Midpoint 3.1-SNAP..) but it fails on another environment (MPT
> configuration unchanged) - windows server 2008 R2, Tomcat 7.0, same
> version of Midpoint etc.
>
> The mapping in question is :
> <mapping>
> <name>Midpoint Role to emulate a real Group</name>
> <authoritative>true</authoritative>
> <source>
> <name>userGroupWithType</name>
> <path>extension/apos:group</path>
> </source>
> <expression>
> <assignmentTargetSearch>
> <targetType>c:RoleType</targetType>
> <filter>
> <q:equal>
> <q:path>extension/apos:group</q:path>
> <expression>
> <script>
> <code>
> 'apos-' +
> userGroupWithType.split(":")[0]
> </code>
> </script>
> </expression>
> </q:equal>
> </filter>
> <createOnDemand>true</createOnDemand>
> <populateObject>
> <populateItem>
> <expression>
> <script>
> <code>
> 'apos-' +
> userGroupWithType.split(":")[0]
> </code>
> </script>
> </expression>
> <target>
> <path>name</path>
> </target>
> </populateItem>
> <populateItem>
> <expression>
> <script>
> <code>
> 'apos-' +
> userGroupWithType.split(":")[0]
> </code>
> </script>
> </expression>
> <target>
> <path>extension/apos:group</path>
> </target>
> </populateItem>
> <populateItem>
> <expression>
> <script>
> <code>
> userGroupWithType.split(":")[1]
> </code>
> </script>
> </expression>
> <target>
> <path>extension/apos:groupType</path>
> </target>
> </populateItem>
> </populateObject>
> </assignmentTargetSearch>
> </expression>
> <target>
> <path>assignment</path>
> </target>
> </mapping>
>
> And the exception is :
>
> 2014-09-10 12:20:41,886 [] [http-bio-8081-exec-5] ERROR
> (com.evolveum.midpoint.model.impl.lens.projector.Projector): Runtime
> error in projector: No type mapping for XSD type
> {http://www.w3.org/2001/XMLSchema}anyType({.../common/common-3}userGroupWithType=PPV(String:Faelles-SesuONDistrikter:common);
> ) in expression in mapping 'Midpoint Role to emulate a real Group' in
> objectTemplate:f3cc46c6-2aaf-4094-8923-f4640f95fe03(New User Template)
> java.lang.RuntimeException: No type mapping for XSD type
> {http://www.w3.org/2001/XMLSchema}anyType({.../common/common-3}userGroupWithType=PPV(String:Faelles-SesuONDistrikter:common);
> ) in expression in mapping 'Midpoint Role to emulate a real Group' in
> objectTemplate:f3cc46c6-2aaf-4094-8923-f4640f95fe03(New User Template)
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator$1.process(AbstractValueTransformationExpressionEvaluator.java:432)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator$1.process(AbstractValueTransformationExpressionEvaluator.java:350)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at com.evolveum.midpoint.util.MiscUtil.carthesian(MiscUtil.java:285)
> ~[util-3.1-SNAPSHOT.jar:na]
> at com.evolveum.midpoint.util.MiscUtil.carthesian(MiscUtil.java:275)
> ~[util-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluateRelativeExpression(AbstractValueTransformationExpressionEvaluator.java:440)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluate(AbstractValueTransformationExpressionEvaluator.java:112)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.Expression.evaluate(Expression.java:136)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.mapping.Mapping.evaluateExpression(Mapping.java:962)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.mapping.Mapping.evaluate(Mapping.java:510)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.LensUtil.evaluateMapping(LensUtil.java:564)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.ObjectTemplateProcessor.collectTripleFromMappings(ObjectTemplateProcessor.java:314)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.ObjectTemplateProcessor.collectTripleFromTemplate(ObjectTemplateProcessor.java:265)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.ObjectTemplateProcessor.processTemplate(ObjectTemplateProcessor.java:168)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.FocusProcessor.processFocusFocus(FocusProcessor.java:262)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.FocusProcessor.processFocus(FocusProcessor.java:182)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.projector.Projector.project(Projector.java:154)
> ~[model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:199) [model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:156)
> [model-impl-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.impl.controller.ModelController.executeChanges(ModelController.java:516)
> [model-impl-3.1-SNAPSHOT.jar:na]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.7.0_21]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.7.0_21]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.7.0_21]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_21]
> at
> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:435)
> [wicket-ioc-6.16.0.jar:6.16.0]
> at com.sun.proxy.$Proxy132.executeChanges(Unknown Source) [na:na]
> at
> com.evolveum.midpoint.web.page.admin.users.PageUsers.reconcilePerformed(PageUsers.java:583)
> [PageUsers.class:na]
> at
> com.evolveum.midpoint.web.page.admin.users.PageUsers.access$500(PageUsers.java:88)
> [PageUsers.class:na]
> at
> com.evolveum.midpoint.web.page.admin.users.PageUsers$14.onClick(PageUsers.java:360)
> [PageUsers$14.class:na]
> at
> com.evolveum.midpoint.web.component.menu.cog.MenuLinkPanel.onClick(MenuLinkPanel.java:98)
> [MenuLinkPanel.class:na]
> at
> com.evolveum.midpoint.web.component.menu.cog.MenuLinkPanel$2.onClick(MenuLinkPanel.java:56)
> [MenuLinkPanel$2.class:na]
> at
> org.apache.wicket.ajax.markup.html.AjaxLink$1.onEvent(AjaxLink.java:86)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:123)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:633)
> [wicket-core-6.16.0.jar:6.16.0]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ~[na:1.7.0_21]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.7.0_21]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> ~[na:1.7.0_21]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_21]
> at
> org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:250)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> [wicket-request-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
> [wicket-core-6.16.0.jar:6.16.0]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> [catalina.jar:7.0.39]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
> [spring-web-4.0.6.RELEASE.jar:4.0.6.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)
> [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE]
> at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
> [spring-web-4.0.6.RELEASE.jar:4.0.6.RELEASE]
> at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
> [spring-web-4.0.6.RELEASE.jar:4.0.6.RELEASE]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> [catalina.jar:7.0.39]
> at
> com.evolveum.midpoint.web.util.MidPointProfilingServletFilter.doFilter(MidPointProfilingServletFilter.java:86)
> [MidPointProfilingServletFilter.class:na]
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) [catalina.jar:7.0.39]
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> [catalina.jar:7.0.39]
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
> [catalina.jar:7.0.39]
> at
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
> [tomcat-coyote.jar:7.0.39]
> at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
> [tomcat-coyote.jar:7.0.39]
> at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
> [tomcat-coyote.jar:7.0.39]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> [na:1.7.0_21]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source) [na:1.7.0_21]
> at java.lang.Thread.run(Unknown Source) [na:1.7.0_21]
> Caused by: java.lang.IllegalArgumentException: No type mapping for XSD
> type {http://www.w3.org/2001/XMLSchema}anyType
> at
> com.evolveum.midpoint.prism.xml.XsdTypeMapper.toJavaType(XsdTypeMapper.java:184)
> ~[prism-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.prism.xml.XsdTypeMapper.toJavaType(XsdTypeMapper.java:173)
> ~[prism-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.jsr223.Jsr223ScriptEvaluator.evaluate(Jsr223ScriptEvaluator.java:134)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpression.evaluate(ScriptExpression.java:110)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluator.transformSingleValue(ScriptExpressionEvaluator.java:58)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluateScriptExpression(AbstractValueTransformationExpressionEvaluator.java:276)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluateAbsoluteExpression(AbstractValueTransformationExpressionEvaluator.java:206)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator.evaluate(AbstractValueTransformationExpressionEvaluator.java:107)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.Expression.evaluate(Expression.java:136)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractSearchExpressionEvaluator.evaluatePopulateExpression(AbstractSearchExpressionEvaluator.java:311)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractSearchExpressionEvaluator.createOnDemand(AbstractSearchExpressionEvaluator.java:247)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractSearchExpressionEvaluator.transformSingleValue(AbstractSearchExpressionEvaluator.java:175)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> at
> com.evolveum.midpoint.model.common.expression.evaluator.AbstractValueTransformationExpressionEvaluator$1.process(AbstractValueTransformationExpressionEvaluator.java:420)
> ~[model-common-3.1-SNAPSHOT.jar:na]
> ... 100 common frames omitted
>
>
> Has anyone encountered this before? The error occurs when I am
> importing a user account or reconciling the user - essentially when the
> mapping kicks in.
>
> BR/
--
Ing. Ivan Noris
Senior Identity Management Engineer
evolveum.com
___________________________________________
"Idem per idem - semper idem Vix."
More information about the midPoint
mailing list