Hi, Finally, I've taken the time and went ahead (re)installing Syncope to try and play with 2.0. First: it's a nice improvement (on the admin interface). Well done!
I've (re) created my test LDAP connector and am able to provision/activate/enable/disable users and groups/groupMembership from admin console. Now I'd like to emulate an authoritative source connector (e.g. HR) from CSVDir connector. I supply five columns in this file called id,email,sn,status and delete. I inserted a header line designating these columns and exactly one test account as 2nd line. Values are separated by comma's. I created the connector and resource to follow the columnames/order in my file, but when I try to setup user provision rules, two thing surprise me: I can't select target columns that are designated for key, status and delete by the connector. Is this by-design? Second, when I finish the provisioning rules (mapping surname to sn and email to email, because that's all that's available on target) by clicking "Save" in the last dialog, Syncope fails with error: "Unable to find property: 'connObjectKeyValidation'. Locale: null, style: null" This is the full error in console.log: 13:23:26.249 ERROR org.apache.syncope.client.console.panels.AbstractModalPanel - While creating or updating org.apache.syncope.common.lib.to.ResourceTO@4e48ade6[ key=CSV local connector=3e972c1b-d06f-45dc-972c-1bd06f35dc0e connectorDisplayName=CSV import provisions=[org.apache.syncope.common.lib.to.ProvisionTO@375fcfeb[ key=<null> anyType=USER objectClass=__ACCOUNT__ auxClasses=[] syncToken=<null> mapping=org.apache.syncope.common.lib.to.MappingTO@16fab764[ connObjectLink=<null> items=[org.apache.syncope.common.lib.to.MappingItemTO@5b25b01e[ key=<null> intAttrName=surname extAttrName=sn connObjectKey=false password=false mandatoryCondition=false purpose=PULL propagationJEXLTransformer=<null> pullJEXLTransformer=<null> mappingItemTransformerClassNames=[] ], org.apache.syncope.common.lib.to.MappingItemTO@2dfaeed6[ key=<null> intAttrName=email extAttrName=email connObjectKey=false password=false mandatoryCondition=false purpose=PULL propagationJEXLTransformer=<null> pullJEXLTransformer=<null> mappingItemTransformerClassNames=[] ]] linkingItems=[] ] virSchemas=[] ]] orgUnit=<null> propagationPriority=0 randomPwdIfNotProvided=true enforceMandatoryCondition=false createTraceLevel=ALL updateTraceLevel=ALL deleteTraceLevel=ALL provisioningTraceLevel=ALL passwordPolicy=<null> accountPolicy=<null> pullPolicy=<null> confOverride=[] overrideCapabilities=false capabilitiesOverride=[SYNC] propagationActionsClassNames=[] ] java.util.MissingResourceException: Unable to find property: 'connObjectKeyValidation'. Locale: null, style: null at org.apache.wicket.Localizer.getString(Localizer.java:268) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.model.StringResourceModel.getString(StringResourceModel.java:439) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.model.StringResourceModel.getString(StringResourceModel.java:424) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.syncope.client.console.wizards.resources.ResourceProvisionPanel.onSubmit(ResourceProvisionPanel.java:323) ~[syncope-client-console-2.0.1.jar:2.0.1] at org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal$2.onSubmit(BaseModal.java:203) ~[syncope-client-console-2.0.1.jar:2.0.1] at org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink$1.onSubmit(AjaxSubmitLink.java:111) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1307) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.markup.html.form.Form.process(Form.java:974) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:795) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601) ~[wicket-core-7.4.0.jar:7.4.0] at sun.reflect.GeneratedMethodAccessor471.invoke(Unknown Source) ~[?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_111] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_111] at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) ~[wicket-request-7.4.0.jar:7.4.0] at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.protocol.ws.AbstractUpgradeFilter.processRequestCycle(AbstractUpgradeFilter.java:70) ~[wicket-native-websocket-core-7.4.0.jar:7.4.0] at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:284) ~[wicket-core-7.4.0.jar:7.4.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) ~[tomcat8-catalina-8.0.32.jar:8.0.32] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) ~[tomcat8-coyote-8.0.32.jar:8.0.32] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) ~[tomcat8-coyote-8.0.32.jar:8.0.32] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) ~[tomcat8-coyote-8.0.32.jar:8.0.32] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) ~[tomcat8-coyote-8.0.32.jar:8.0.32] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_111] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_111] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat8-util-8.0.32.jar:8.0.32] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_111] -- If 'but' was any useful, it would be a logic operator