diff --git a/ldap-services/.gitignore b/ldap-services/.gitignore
new file mode 100644
index 0000000..444fd16
--- /dev/null
+++ b/ldap-services/.gitignore
@@ -0,0 +1,14 @@
+*.class
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+/target
+/.settings
+/.classpath
+/.project
+/derby.log
diff --git a/ldap-services/pom.xml b/ldap-services/pom.xml
new file mode 100644
index 0000000..481e045
--- /dev/null
+++ b/ldap-services/pom.xml
@@ -0,0 +1,197 @@
+
+ 4.0.0
+
+ de.hsadmin
+ hsadmin-parent
+ 1.0-SNAPSHOT
+
+
+ ldap-webapp
+ war
+ HSAdmin XML-RPC LDAP Account Webapp
+
+
+
+ de.hsadmin
+ framework
+ 1.0-SNAPSHOT
+
+
+ de.hsadmin
+ framework
+ 1.0-SNAPSHOT
+ test-jar
+ test
+
+
+ org.apache.geronimo.specs
+ geronimo-jpa_2.0_spec
+ 1.1
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-ejb_3.0_spec
+ 1.0.1
+ provided
+
+
+ org.apache.geronimo.specs
+ geronimo-validation_1.0_spec
+ 1.1
+
+
+ org.apache.bval
+ org.apache.bval.bundle
+ 0.5
+ test
+
+
+ org.apache.openjpa
+ openjpa
+ 2.4.2
+ test
+
+
+ org.liquibase
+ liquibase-core
+ 3.5.3
+ test
+
+
+ org.apache.xmlrpc
+ xmlrpc-server
+ 3.1.3
+
+
+ javax.servlet
+ servlet-api
+
+
+
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.0.0
+
+ true
+
+
+
+ org.apache.maven.plugins
+ 3.0.2
+ maven-jar-plugin
+
+
+ **/XmlRpcServlet.properties
+
+
+
+
+ make-a-jar
+ compile
+
+ jar
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 1.7
+
+
+ attach-artifacts
+ package
+
+ attach-artifact
+
+
+
+
+ ${project.basedir}/target/ldap-webapp-1.0-SNAPSHOT.jar
+ jar
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.6.0
+
+
+ migratePostgresLiquibaseChangeLogToH2
+ generate-sources
+
+ exec
+
+
+ ${project.basedir}/scripts/migratePostgresLiquibaseChangeLogToH2.${script.extension}
+
+ ${project.parent.basedir}/db-migration/src/main/resources/liquibase/db.changelog.xml
+ ${project.build.directory}/classes/liquibase/db.changelog.xml
+
+
+
+
+
+
+ org.apache.openejb.maven
+ tomee-maven-plugin
+ 1.7.4
+
+ 1.7.4
+ webprofile
+ false
+ 8000
+ ldap-webapp
+ ${project.basedir}/src/test/tomee/conf
+
+ org.postgresql:postgresql:9.4.1212.jre7
+
+
+
+
+ org.apache.openjpa
+ openjpa-maven-plugin
+ 2.4.2
+
+ **/bo/*.class
+ true
+ true
+
+
+
+ enhancer
+ process-classes
+
+ enhance
+
+
+
+
+
+ org.apache.openjpa
+ openjpa
+
+ 2.4.2
+ compile
+
+
+
+
+
+
diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java
new file mode 100644
index 0000000..cd4a838
--- /dev/null
+++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserService.java
@@ -0,0 +1,16 @@
+package de.hsadmin.service.ldap;
+
+import javax.ejb.Stateless;
+
+import de.hsadmin.common.error.TechnicalException;
+import de.hsadmin.module.impl.AbstractModule;
+
+@Stateless
+public class LdapUserService extends AbstractModule implements LdapUserServiceLocal {
+
+ @Override
+ public LdapUserVO buildVO() throws TechnicalException {
+ return new LdapUserVO();
+ }
+
+}
diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserServiceLocal.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserServiceLocal.java
new file mode 100644
index 0000000..3c62cfb
--- /dev/null
+++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserServiceLocal.java
@@ -0,0 +1,10 @@
+package de.hsadmin.service.ldap;
+
+import javax.ejb.Local;
+
+import de.hsadmin.module.Module;
+
+@Local
+public interface LdapUserServiceLocal extends Module {
+
+}
\ No newline at end of file
diff --git a/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java
new file mode 100644
index 0000000..912c0e8
--- /dev/null
+++ b/ldap-services/src/main/java/de/hsadmin/service/ldap/LdapUserVO.java
@@ -0,0 +1,133 @@
+package de.hsadmin.service.ldap;
+
+import javax.validation.constraints.Pattern;
+
+import de.hsadmin.common.error.TechnicalException;
+import de.hsadmin.module.impl.AbstractVO;
+import de.hsadmin.module.property.ReadWrite;
+import de.hsadmin.module.property.ReadWritePolicy;
+import de.hsadmin.module.property.Required;
+import de.hsadmin.module.property.Search;
+import de.hsadmin.module.property.SearchPolicy;
+
+public class LdapUserVO extends AbstractVO {
+
+ @Required(true)
+ @ReadWrite(ReadWritePolicy.WRITEONCE)
+ @Search(SearchPolicy.EQUALS)
+ @Pattern(regexp="[a-z0-9]{3}\\-[a-z0-9]+")
+ private String uid;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ private String userPassword;
+
+ @Required(true)
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Search(SearchPolicy.EQUALS)
+ private String sn;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Search(SearchPolicy.EQUALS)
+ private String givenName;
+
+ @Required(true)
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Search(SearchPolicy.EQUALS)
+ @Pattern(regexp="[a-zA-Z0-9\\.\\-\\_]*@[a-z0-9äöüß\\.\\-]*")
+ private String mail;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Pattern(regexp="[\\+\\d\\-\\ \\(\\)\\/]*")
+ private String mobile;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Pattern(regexp="[\\+\\d\\-\\ \\(\\)\\/]*")
+ private String homePhone;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ @Search(SearchPolicy.EQUALS)
+ @Pattern(regexp="[a-z0-9]*")
+ private String nickName;
+
+ @ReadWrite(ReadWritePolicy.READWRITE)
+ private String[] sshPublicKey;
+
+ public LdapUserVO() throws TechnicalException {
+ super();
+ }
+
+ public String getUid() {
+ return uid;
+ }
+
+ public void setUid(String uid) {
+ this.uid = uid;
+ }
+
+ public String getUserPassword() {
+ return userPassword;
+ }
+
+ public void setUserPassword(String userPassword) {
+ this.userPassword = userPassword;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public String getGivenName() {
+ return givenName;
+ }
+
+ public void setGivenName(String givenName) {
+ this.givenName = givenName;
+ }
+
+ public String getMail() {
+ return mail;
+ }
+
+ public void setMail(String mail) {
+ this.mail = mail;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getHomePhone() {
+ return homePhone;
+ }
+
+ public void setHomePhone(String homePhone) {
+ this.homePhone = homePhone;
+ }
+
+ public String getNickName() {
+ return nickName;
+ }
+
+ public void setNickName(String nickName) {
+ this.nickName = nickName;
+ }
+
+ public String[] getSshPublicKey() {
+ return sshPublicKey;
+ }
+
+ public void setSshPublicKey(String[] sshPublicKey) {
+ this.sshPublicKey = sshPublicKey;
+ }
+
+
+
+}
diff --git a/pom.xml b/pom.xml
index d251a49..4c78360 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,6 +21,7 @@
db-migration
framework
cust-services
+ ldap-services
database-services
web
cli