Hey All, I am working to setup LCS (latest APT Version) to sync my AD Domain users and groups with OpenLDAP. I have the following lsc.xml:
[code] <?xml version=”1.0″ ?> <lsc xmlns=”http://lsc-project.org/XSD/lsc-core-2.0.xsd” revision=”0″> <connections> <ldapConnection> <name>dst-ldap</name> <url>10.210.14.79:389/dc=jss,dc=cardinalhealth,dc=local</url> <username>cn=admin,dc=jss,dc=cardinalhealth,dc=local/username> <password>Cardinal1</password> <authentication>SIMPLE</authentication> <referral>IGNORE</referral> <derefAliases>NEVER</derefAliases> <version>VERSION_3</version> <pageSize>1000</pageSize> <factory>com.sun.jndi.ldap.LdapCtxFactory</factory> <tlsActivated>false</tlsActivated> </ldapConnection> <ldapConnection> <name>src-ad</name> <url>ldap-corp.cardinalhealth.net:389/dc=cardinalhealth,dc=net</url> <username>cardinalhealth\edward.shorrock</username> <password>Vbn37190</password> <authentication>SIMPLE</authentication> <referral>IGNORE</referral> <derefAliases>NEVER</derefAliases> <version>VERSION_3</version> <pageSize>1000</pageSize> </ldapConnection> </connections> <audits/> <tasks> <task> <name>MySyncTask</name> <bean>org.lsc.beans.SimpleBean</bean> <ldapSourceService> <name>MySyncTask-src</name> <connection reference=”src-ad”/> <baseDn>ou=Users,ou=Users and Groups,dc=jss,dc=cardinalhealth,dc=local</baseDn> <pivotAttributes> <string>userPrincipalName</string> </pivotAttributes> <fetchedAttributes> <string>cn</string> <string>sn</string> <string>givenName</string> <string>mail</string> <string>sAMAccountName</string> <string>userPrincipalName</string> </fetchedAttributes> <getAllFilter>(&(mail=*)(objectClass=user))</getAllFilter> <getOneFilter>(&(userPrincipalName={userPrincipalName})(objectClass=user))</getOneFilter> <cleanFilter>(&(userPrincipalName={userPrincipalName})(objectClass=user))</cleanFilter> <interval>6</interval> </ldapSourceService> <ldapDestinationService> <name>MySyncTask-dst</name> <connection reference=”dst-ldap”/> <baseDn>ou=Users,ou=Users and Groups,dc=jss,dc=cardinalhealth,dc=local</baseDn> <pivotAttributes> <string>mail</string> </pivotAttributes> <fetchedAttributes> <string>cn</string> <string>sn</string> <string>objectClass</string> <string>givenName</string> <string>mail</string> <string>uid</string> </fetchedAttributes> <getAllFilter>(objectClass=inetOrgPerson)</getAllFilter> <getOneFilter>(&(objectClass=inetOrgPerson)(mail={mail}))</getOneFilter> </ldapDestinationService> <propertiesBasedSyncOptions> <mainIdentifier>”mail=” + srcBean.getDatasetFirstValueById(“mail”) + “,ou=mydomain,DC=mydomain,DC=co,DC=uk”</mainIdentifier> <defaultDelimiter>;</defaultDelimiter> <defaultPolicy>FORCE</defaultPolicy> <dataset> <name>objectClass</name> <policy>FORCE</policy> <forceValues> <string>”inetOrgPerson”</string> <string>”organizationalPerson”</string> <string>”person”</string> <string>”top”</string> </forceValues> <delimiter>,</delimiter> </dataset> <dataset> <name>uid</name> <policy>FORCE</policy> <forceValues> <string> srcBean.getDatasetFirstValueById(“sAMAccountName”)</string> </forceValues> </dataset> <dataset> <name>default</name> <policy>FORCE</policy> </dataset> </propertiesBasedSyncOptions> </task> <task> <name>GroupSyncTask</name> <bean>org.lsc.beans.SimpleBean</bean> <ldapSourceService> <name>GroupSyncTask-src</name> <connection reference=”src-ad”/> <baseDn>ou=Groups,ou=Users and Groups,dc=jss,dc=cardinalhealth,dc=local</baseDn> <pivotAttributes> <string>cn</string> </pivotAttributes> <fetchedAttributes> <string>cn</string> <string>member</string> </fetchedAttributes> <getAllFilter>(&(objectClass=group)(member=*)(|(cn=-sec-Jira*)(cn=-sec-Confluence*)))</getAllFilter> <getOneFilter>(&(objectClass=group)(cn={cn}))</getOneFilter> <cleanFilter>(&(objectClass=group)(cn={cn}))</cleanFilter> <interval>100</interval> </ldapSourceService> <ldapDestinationService> <name>GroupSyncTask-dst</name> <connection reference=”dst-ldap”/> <baseDn>ou=Groups,ou=Users and Groups,dc=jss,dc=cardinalhealth,dc=local</baseDn> <pivotAttributes> <string>cn</string> </pivotAttributes> <fetchedAttributes> <string>cn</string> <string>member</string> <string>objectClass</string> </fetchedAttributes> <getAllFilter>(objectClass=groupOfNames)</getAllFilter> <getOneFilter>(&(objectClass=groupOfNames)(cn={cn}))</getOneFilter> </ldapDestinationService> <propertiesBasedSyncOptions> <mainIdentifier>”cn=” + srcBean.getDatasetValuesById(“cn”)+ “,ou=groups,DC=mydomain,DC=co,DC=uk”</mainIdentifier> <defaultDelimiter>;</defaultDelimiter> <defaultPolicy>FORCE</defaultPolicy> <dataset> <name>objectClass</name> <policy>FORCE</policy> <forceValues> <string>”groupOfNames”</string> <string>”top”</string> </forceValues> <delimiter>$</delimiter> </dataset> <dataset> <name>default</name> <policy>FORCE</policy> </dataset> </propertiesBasedSyncOptions> </task> </tasks> </lsc> [/code] I then attempted a dry run with the following command: [code] /usr/bin/lsc -f /etc/lsc/ad2openldap/ -s all -c all –n [/code] Seems I have gotten something wrong here though. I get the following error: [code] 22:52:19,820 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 22:52:19,820 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/etc/lsc/logback.xml] 22:52:19,820 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath. 22:52:19,820 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/etc/lsc/logback.xml] 22:52:19,820 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/usr/lib/lsc/lsc-core-2.1.4.jar!/logback.xml] 22:52:19,853 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 22:52:19,855 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 22:52:19,857 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE] 22:52:19,870 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [encoder] on top of the object stack. 22:52:19,876 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [layout] on top of the object stack. 22:52:19,902 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 22:52:19,903 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LSC] 22:52:19,905 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [layout] on top of the object stack. 22:52:19,906 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LSC] - This appender no longer admits a layout as a sub-component, set an encoder instead. 22:52:19,906 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LSC] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder. 22:52:19,906 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LSC] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details 22:52:19,908 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [filter] on top of the object stack. 22:52:19,913 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [rollingPolicy] on top of the object stack. 22:52:19,918 |-INFO in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@73035e27 - Will use gz compression 22:52:19,919 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [triggeringPolicy] on top of the object stack. 22:52:19,921 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LSC] - Active log file name: /var/log/lsc/lsc.log 22:52:19,921 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LSC] - File property is set to [/var/log/lsc/lsc.log] 22:52:19,922 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.FileAppender] 22:52:19,922 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LSC_STATUS] 22:52:19,922 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [layout] on top of the object stack. 22:52:19,922 |-WARN in ch.qos.logback.core.FileAppender[LSC_STATUS] - This appender no longer admits a layout as a sub-component, set an encoder instead. 22:52:19,922 |-WARN in ch.qos.logback.core.FileAppender[LSC_STATUS] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder. 22:52:19,922 |-WARN in ch.qos.logback.core.FileAppender[LSC_STATUS] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details 22:52:19,922 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [filter] on top of the object stack. 22:52:19,922 |-INFO in ch.qos.logback.core.FileAppender[LSC_STATUS] - File property is set to [/var/log/lsc/lsc.status] 22:52:19,922 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender] 22:52:19,923 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [LDIF] 22:52:19,923 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [layout] on top of the object stack. 22:52:19,923 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LDIF] - This appender no longer admits a layout as a sub-component, set an encoder instead. 22:52:19,923 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LDIF] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder. 22:52:19,923 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[LDIF] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details 22:52:19,923 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [filter] on top of the object stack. 22:52:19,923 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [rollingPolicy] on top of the object stack. 22:52:19,923 |-INFO in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@64c64813 - Will use gz compression 22:52:19,923 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Pushing component [triggeringPolicy] on top of the object stack. 22:52:19,924 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LDIF] - Active log file name: /var/log/lsc/lsc.ldif 22:52:19,924 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[LDIF] - File property is set to [/var/log/lsc/lsc.ldif] 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.lsc] to INFO 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.lsc] to true 22:52:19,924 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LSC] to Logger[org.lsc] 22:52:19,924 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LSC_STATUS] to Logger[org.lsc] 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [lsc] to INFO 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [lsc] to true 22:52:19,924 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [LDIF] to Logger[lsc] 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [communicationLogger] to WARN 22:52:19,924 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [communicationLogger] to true 22:52:19,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[communicationLogger] 22:52:19,925 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.apache] to WARN 22:52:19,925 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.apache] to true 22:52:19,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[org.apache] 22:52:19,925 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [poolLogger] to WARN 22:52:19,925 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [poolLogger] to true 22:52:19,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[poolLogger] 22:52:19,925 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 22:52:19,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT] Sep 20 22:52:20 - INFO - Reflections took 43 ms to scan 1 urls, producing 56 keys and 117 values Sep 20 22:52:20 - ERROR - Unable to load configuration (org.lsc.exception.LscConfigurationException: Configuration exception: null) org.lsc.exception.LscConfigurationException: Configuration exception: null at org.lsc.configuration.JaxbXmlConfigurationHelper.getConfiguration(JaxbXmlConfigurationHelper.java:162) ~[lsc-core-2.1.4.jar:na] at org.lsc.Configuration.setUp(Configuration.java:482) [lsc-core-2.1.4.jar:na] at org.lsc.Configuration.setUp(Configuration.java:456) [lsc-core-2.1.4.jar:na] at org.lsc.Launcher.run(Launcher.java:205) [lsc-core-2.1.4.jar:na] at org.lsc.Launcher.launch(Launcher.java:158) [lsc-core-2.1.4.jar:na] at org.lsc.Launcher.main(Launcher.java:141) [lsc-core-2.1.4.jar:na] Caused by: javax.xml.bind.UnmarshalException: null at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335) ~[na:1.8.0_131] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:563) ~[na:1.8.0_131] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:249) ~[na:1.8.0_131] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:214) ~[na:1.8.0_131] at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157) ~[na:1.8.0_131] at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:162) ~[na:1.8.0_131] at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:171) ~[na:1.8.0_131] at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:189) ~[na:1.8.0_131] at org.lsc.configuration.JaxbXmlConfigurationHelper.getConfiguration(JaxbXmlConfigurationHelper.java:160) ~[lsc-core-2.1.4.jar:na] ... 5 common frames omitted Caused by: org.xml.sax.SAXParseException: The value following "version" in the XML declaration must be a quoted string. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanPseudoAttribute(XMLScanner.java:623) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanXMLDeclOrTextDecl(XMLScanner.java:458) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanXMLDeclOrTextDecl(XMLDocumentFragmentScannerImpl.java:948) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$XMLDeclDriver.next(XMLDocumentScannerImpl.java:770) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:443) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) ~[na:1.8.0_131] at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) ~[na:1.8.0_131] at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:243) ~[na:1.8.0_131] ... 11 common frames omitted [/code] I googled and googled but I cannot find much on this. Any help anyone can offer would be MUCH appreciated! Thanks! Ed S. _________________________________________________ This message is for the designated recipient only and may contain privileged, proprietary or otherwise private information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the email by you is prohibited. Dansk - Deutsch - Espanol - Francais - Italiano - Japanese - Nederlands - Norsk - Portuguese - Chinese Svenska: http://www.cardinalhealth.com/en/support/terms-and-conditions-english.html
_______________________________________________________________ Ldap Synchronization Connector (LSC) - http://lsc-project.org lsc-users mailing list [email protected] https://lists.lsc-project.org/cgi-bin/mailman/listinfo/lsc-users

