You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/12/14 16:36:46 UTC

[syncope] 01/02: [SYNCOPE-1410] core actually split as idrepo / idm

This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git

commit 8234b4affa19fa854546f975f97f33522ac009c3
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Fri Dec 14 14:11:48 2018 +0100

    [SYNCOPE-1410] core actually split as idrepo / idm
---
 .../resources/archetype-resources/core/pom.xml     |  4 +-
 archetype/src/main/resources/meta-pom.xml          |  4 +-
 {ext/scimv2/rest-cxf => core/idm/logic}/pom.xml    | 57 +++++++++++++---------
 .../syncope/core/logic/ConnectorHistoryLogic.java  |  0
 .../apache/syncope/core/logic/ConnectorLogic.java  |  0
 .../syncope/core/logic/ReconciliationLogic.java    |  0
 .../syncope/core/logic/RemediationLogic.java       |  0
 .../syncope/core/logic/ResourceHistoryLogic.java   |  0
 .../apache/syncope/core/logic/ResourceLogic.java   |  0
 {ext/camel/logic => core/idm}/pom.xml              | 43 +++++-----------
 {ext/scimv2 => core/idm}/rest-cxf/pom.xml          | 46 +++++++++++------
 .../cxf/service/ConnectorHistoryServiceImpl.java   |  0
 .../rest/cxf/service/ConnectorServiceImpl.java     |  0
 .../cxf/service/ReconciliationServiceImpl.java     |  0
 .../rest/cxf/service/RemediationServiceImpl.java   |  0
 .../cxf/service/ResourceHistoryServiceImpl.java    |  0
 .../core/rest/cxf/service/ResourceServiceImpl.java |  0
 core/{ => idrepo}/logic/pom.xml                    | 14 +++---
 .../syncope/core/logic/AbstractAnyLogic.java       |  0
 .../syncope/core/logic/AbstractAuditAppender.java  |  0
 .../core/logic/AbstractExecutableLogic.java        |  0
 .../syncope/core/logic/AbstractJobLogic.java       |  0
 .../apache/syncope/core/logic/AbstractLogic.java   |  0
 .../core/logic/AbstractResourceAssociator.java     |  0
 .../core/logic/AbstractTransactionalLogic.java     |  0
 .../syncope/core/logic/AccessTokenLogic.java       |  0
 .../apache/syncope/core/logic/AnyObjectLogic.java  |  0
 .../syncope/core/logic/AnyTypeClassLogic.java      |  0
 .../apache/syncope/core/logic/AnyTypeLogic.java    |  0
 .../syncope/core/logic/ApplicationLogic.java       |  0
 .../syncope/core/logic/ConfigurationLogic.java     |  0
 .../org/apache/syncope/core/logic/DomainLogic.java |  0
 .../apache/syncope/core/logic/DynRealmLogic.java   |  0
 .../org/apache/syncope/core/logic/GroupLogic.java  |  0
 .../syncope/core/logic/ImplementationLogic.java    |  0
 .../org/apache/syncope/core/logic/LoggerLogic.java |  0
 .../syncope/core/logic/LogicInvocationHandler.java |  0
 .../syncope/core/logic/MailTemplateLogic.java      |  0
 .../apache/syncope/core/logic/MemoryAppender.java  |  0
 .../syncope/core/logic/NotificationLogic.java      |  0
 .../org/apache/syncope/core/logic/PolicyLogic.java |  0
 .../org/apache/syncope/core/logic/RealmLogic.java  |  0
 .../syncope/core/logic/RelationshipTypeLogic.java  |  0
 .../org/apache/syncope/core/logic/ReportLogic.java |  0
 .../syncope/core/logic/ReportTemplateLogic.java    |  0
 .../org/apache/syncope/core/logic/RoleLogic.java   |  0
 .../org/apache/syncope/core/logic/SchemaLogic.java |  0
 .../syncope/core/logic/SecurityQuestionLogic.java  |  0
 .../apache/syncope/core/logic/SyncopeLogic.java    |  0
 .../org/apache/syncope/core/logic/TaskLogic.java   |  0
 .../core/logic/UnresolvedReferenceException.java   |  0
 .../org/apache/syncope/core/logic/UserLogic.java   |  0
 .../syncope/core/logic/audit/AuditAppender.java    |  0
 .../core/logic/audit/DefaultAuditAppender.java     |  0
 .../logic/audit/DefaultRewriteAuditAppender.java   |  0
 .../logic/audit/PassThroughAuditRewritePolicy.java |  0
 .../syncope/core/logic/cocoon/FopSerializer.java   |  0
 .../syncope/core/logic/cocoon/TextSerializer.java  |  0
 .../syncope/core/logic/cocoon/XSLTTransformer.java |  0
 .../init/ClassPathScanImplementationLookup.java    |  0
 .../core/logic/init/EntitlementAccessor.java       |  0
 .../syncope/core/logic/init/EntitlementLoader.java |  0
 .../syncope/core/logic/init/LoggerAccessor.java    |  0
 .../syncope/core/logic/init/LoggerLoader.java      |  0
 .../syncope/core/logic/init/LogicInitializer.java  |  0
 .../logic/src/main/resources/logic.properties      |  0
 .../logic/src/main/resources/logicContext.xml      |  0
 {ext/camel/logic => core/idrepo}/pom.xml           | 43 +++++-----------
 core/{ => idrepo}/rest-cxf/pom.xml                 | 26 +++++-----
 .../syncope/core/rest/cxf/AddDomainFilter.java     |  0
 .../syncope/core/rest/cxf/AddETagFilter.java       |  0
 .../syncope/core/rest/cxf/CheckDomainFilter.java   |  0
 .../apache/syncope/core/rest/cxf/JavaDocUtils.java |  0
 .../core/rest/cxf/RestServiceExceptionMapper.java  |  0
 .../core/rest/cxf/SyncopeOpenApiCustomizer.java    |  0
 .../core/rest/cxf/ThreadLocalCleanupListener.java  |  0
 .../core/rest/cxf/UnwrappedObjectMapper.java       |  0
 .../apache/syncope/core/rest/cxf/WADLServlet.java  |  0
 .../syncope/core/rest/cxf/WadlGenerator.java       |  0
 .../core/rest/cxf/batch/BatchItemRequest.java      |  0
 .../core/rest/cxf/batch/BatchItemResponse.java     |  0
 .../syncope/core/rest/cxf/batch/BatchProcess.java  |  0
 .../core/rest/cxf/service/AbstractAnyService.java  |  0
 .../cxf/service/AbstractExecutableService.java     |  0
 .../core/rest/cxf/service/AbstractServiceImpl.java |  0
 .../rest/cxf/service/AccessTokenServiceImpl.java   |  0
 .../rest/cxf/service/AnyObjectServiceImpl.java     |  0
 .../rest/cxf/service/AnyTypeClassServiceImpl.java  |  0
 .../core/rest/cxf/service/AnyTypeServiceImpl.java  |  0
 .../rest/cxf/service/ApplicationServiceImpl.java   |  0
 .../rest/cxf/service/ConfigurationServiceImpl.java |  0
 .../core/rest/cxf/service/DomainServiceImpl.java   |  0
 .../core/rest/cxf/service/DynRealmServiceImpl.java |  0
 .../core/rest/cxf/service/GroupServiceImpl.java    |  0
 .../cxf/service/ImplementationServiceImpl.java     |  0
 .../core/rest/cxf/service/LoggerServiceImpl.java   |  0
 .../rest/cxf/service/MailTemplateServiceImpl.java  |  0
 .../rest/cxf/service/NotificationServiceImpl.java  |  0
 .../core/rest/cxf/service/PolicyServiceImpl.java   |  0
 .../core/rest/cxf/service/RealmServiceImpl.java    |  0
 .../cxf/service/RelationshipTypeServiceImpl.java   |  0
 .../core/rest/cxf/service/ReportServiceImpl.java   |  0
 .../cxf/service/ReportTemplateServiceImpl.java     |  0
 .../core/rest/cxf/service/RoleServiceImpl.java     |  0
 .../core/rest/cxf/service/SchemaServiceImpl.java   |  0
 .../cxf/service/SecurityQuestionServiceImpl.java   |  0
 .../core/rest/cxf/service/SyncopeServiceImpl.java  |  0
 .../core/rest/cxf/service/TaskServiceImpl.java     |  0
 .../core/rest/cxf/service/UserSelfServiceImpl.java |  0
 .../core/rest/cxf/service/UserServiceImpl.java     |  0
 .../resources/META-INF/cxf/org.apache.cxf.Logger   |  0
 .../src/main/resources/META-INF/web-fragment.xml   |  0
 .../src/main/resources/errorMessages.properties    |  0
 .../rest-cxf/src/main/resources/restCXFContext.xml |  0
 .../src/main/resources/wadl2html/index.xsl         |  0
 .../src/main/resources/wadl2html/schema.xsl        |  0
 core/pom.xml                                       |  5 +-
 core/spring/pom.xml                                |  4 +-
 deb/core/pom.xml                                   |  4 +-
 ext/camel/logic/pom.xml                            |  4 +-
 ext/camel/rest-cxf/pom.xml                         |  4 +-
 ext/flowable/logic/pom.xml                         |  4 +-
 ext/flowable/rest-cxf/pom.xml                      |  4 +-
 ext/oidcclient/logic/pom.xml                       |  4 +-
 ext/oidcclient/rest-cxf/pom.xml                    |  4 +-
 ext/saml2sp/logic/pom.xml                          |  4 +-
 ext/saml2sp/rest-cxf/pom.xml                       |  4 +-
 ext/scimv2/logic/pom.xml                           |  4 +-
 ext/scimv2/rest-cxf/pom.xml                        |  4 +-
 fit/core-reference/pom.xml                         |  4 +-
 130 files changed, 141 insertions(+), 153 deletions(-)

diff --git a/archetype/src/main/resources/archetype-resources/core/pom.xml b/archetype/src/main/resources/archetype-resources/core/pom.xml
index f951894..c66cb51 100644
--- a/archetype/src/main/resources/archetype-resources/core/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/core/pom.xml
@@ -53,8 +53,8 @@ under the License.
     </dependency>
     
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
     </dependency>
     <dependency>
       <groupId>org.apache.syncope.core</groupId>
diff --git a/archetype/src/main/resources/meta-pom.xml b/archetype/src/main/resources/meta-pom.xml
index 751cfde..9059d40 100644
--- a/archetype/src/main/resources/meta-pom.xml
+++ b/archetype/src/main/resources/meta-pom.xml
@@ -55,8 +55,8 @@ under the License.
       </dependency>
       
       <dependency>
-        <groupId>org.apache.syncope.core</groupId>
-        <artifactId>syncope-core-rest-cxf</artifactId>
+        <groupId>org.apache.syncope.core.idm</groupId>
+        <artifactId>syncope-core-idm-rest-cxf</artifactId>
         <version>${syncope.version}</version>
       </dependency>
       <dependency>
diff --git a/ext/scimv2/rest-cxf/pom.xml b/core/idm/logic/pom.xml
similarity index 59%
copy from ext/scimv2/rest-cxf/pom.xml
copy to core/idm/logic/pom.xml
index cfb4471..6765acb 100644
--- a/ext/scimv2/rest-cxf/pom.xml
+++ b/core/idm/logic/pom.xml
@@ -22,15 +22,15 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope.ext</groupId>
-    <artifactId>syncope-ext-scimv2</artifactId>
+    <groupId>org.apache.syncope.core</groupId>
+    <artifactId>syncope-core-idm</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Ext: SCIMv2 REST CXF</name>
-  <description>Apache Syncope Ext: SCIMv2 REST CXF</description>
-  <groupId>org.apache.syncope.ext.scimv2</groupId>
-  <artifactId>syncope-ext-scimv2-rest-cxf</artifactId>
+  <name>Apache Syncope Core IdM Logic</name>
+  <description>Apache Syncope Core IdM Logic</description>
+  <groupId>org.apache.syncope.core.idm</groupId>
+  <artifactId>syncope-core-idm-logic</artifactId>
   <packaging>jar</packaging>
   
   <properties>
@@ -39,31 +39,40 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-rest-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-rest-api</artifactId>
-      <version>${project.version}</version>
-      <classifier>javadoc</classifier>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-logic</artifactId>
+      <groupId>org.apache.syncope.core.idrepo</groupId>
+      <artifactId>syncope-core-idrepo-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
   </dependencies>
 
   <build>
+    <resources>
+      <resource>
+        <directory>${basedir}/src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+    </resources>
+        
     <plugins>
       <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>buildnumber-maven-plugin</artifactId>
+        <inherited>true</inherited>
+        <configuration>
+          <doCheck>false</doCheck>
+          <doUpdate>false</doUpdate>
+        </configuration>
+        <executions>
+          <execution>
+            <phase>validate</phase>
+            <goals>
+              <goal>create</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
       </plugin>
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/ConnectorHistoryLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/ConnectorLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/ReconciliationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/RemediationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceHistoryLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
rename to core/idm/logic/src/main/java/org/apache/syncope/core/logic/ResourceLogic.java
diff --git a/ext/camel/logic/pom.xml b/core/idm/pom.xml
similarity index 53%
copy from ext/camel/logic/pom.xml
copy to core/idm/pom.xml
index d820933..757649f 100644
--- a/ext/camel/logic/pom.xml
+++ b/core/idm/pom.xml
@@ -22,40 +22,23 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope.ext</groupId>
-    <artifactId>syncope-ext-camel</artifactId>
+    <groupId>org.apache.syncope</groupId>
+    <artifactId>syncope-core</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Ext: Camel Logic</name>
-  <description>Apache Syncope Ext: Camel Logic</description>
-  <groupId>org.apache.syncope.ext.camel</groupId>
-  <artifactId>syncope-ext-camel-logic</artifactId>
-  <packaging>jar</packaging>
+  <name>Apache Syncope Core IdM</name>
+  <description>Apache Syncope Core IdM</description>
+  <groupId>org.apache.syncope.core</groupId>
+  <artifactId>syncope-core-idm</artifactId>
+  <packaging>pom</packaging>
   
   <properties>
-    <rootpom.basedir>${basedir}/../../..</rootpom.basedir>
+    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
   </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.syncope.ext.camel</groupId>
-      <artifactId>syncope-ext-camel-provisioning</artifactId>
-      <version>${project.version}</version>
-    </dependency>  
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
+  
+  <modules>
+    <module>logic</module>
+    <module>rest-cxf</module>
+  </modules>
 </project>
diff --git a/ext/scimv2/rest-cxf/pom.xml b/core/idm/rest-cxf/pom.xml
similarity index 62%
copy from ext/scimv2/rest-cxf/pom.xml
copy to core/idm/rest-cxf/pom.xml
index cfb4471..a61222e 100644
--- a/ext/scimv2/rest-cxf/pom.xml
+++ b/core/idm/rest-cxf/pom.xml
@@ -22,15 +22,15 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope.ext</groupId>
-    <artifactId>syncope-ext-scimv2</artifactId>
+    <groupId>org.apache.syncope.core</groupId>
+    <artifactId>syncope-core-idm</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Ext: SCIMv2 REST CXF</name>
-  <description>Apache Syncope Ext: SCIMv2 REST CXF</description>
-  <groupId>org.apache.syncope.ext.scimv2</groupId>
-  <artifactId>syncope-ext-scimv2-rest-cxf</artifactId>
+  <name>Apache Syncope Core IdM REST CXF</name>
+  <description>Apache Syncope Core IdM REST CXF</description>
+  <groupId>org.apache.syncope.core.idm</groupId>
+  <artifactId>syncope-core-idm-rest-cxf</artifactId>
   <packaging>jar</packaging>
   
   <properties>
@@ -38,35 +38,49 @@ under the License.
   </properties>
 
   <dependencies>
+    <dependency> 
+      <groupId>javax.servlet</groupId> 
+      <artifactId>javax.servlet-api</artifactId> 
+      <scope>provided</scope>
+    </dependency>
+
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.common.idm</groupId>
+      <artifactId>syncope-common-idm-rest-api</artifactId>
       <version>${project.version}</version>
+      <classifier>javadoc</classifier>
     </dependency>
+    
     <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-rest-api</artifactId>
+      <groupId>org.apache.syncope.core.idrepo</groupId>
+      <artifactId>syncope-core-idrepo-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-rest-api</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-logic</artifactId>
       <version>${project.version}</version>
-      <classifier>javadoc</classifier>
     </dependency>
     <dependency>
-      <groupId>org.apache.syncope.ext.scimv2</groupId>
-      <artifactId>syncope-ext-scimv2-logic</artifactId>
+      <groupId>org.apache.syncope.common.idm</groupId>
+      <artifactId>syncope-common-idm-rest-api</artifactId>
       <version>${project.version}</version>
     </dependency>
   </dependencies>
 
   <build>
-    <plugins>
+    <plugins>            
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
       </plugin>
     </plugins>
+
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+    </resources>
   </build>
 </project>
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorHistoryServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConnectorServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReconciliationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RemediationServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RemediationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RemediationServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RemediationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceHistoryServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java
rename to core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ResourceServiceImpl.java
diff --git a/core/logic/pom.xml b/core/idrepo/logic/pom.xml
similarity index 90%
rename from core/logic/pom.xml
rename to core/idrepo/logic/pom.xml
index 445552e..0d9a6cd 100644
--- a/core/logic/pom.xml
+++ b/core/idrepo/logic/pom.xml
@@ -22,19 +22,19 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope</groupId>
-    <artifactId>syncope-core</artifactId>
+    <groupId>org.apache.syncope.core</groupId>
+    <artifactId>syncope-core-idrepo</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Core Logic</name>
-  <description>Apache Syncope Core Logic</description>
-  <groupId>org.apache.syncope.core</groupId>
-  <artifactId>syncope-core-logic</artifactId>
+  <name>Apache Syncope Core IdRepo Logic</name>
+  <description>Apache Syncope Core IdRepo Logic</description>
+  <groupId>org.apache.syncope.core.idrepo</groupId>
+  <artifactId>syncope-core-idrepo-logic</artifactId>
   <packaging>jar</packaging>
   
   <properties>
-    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+    <rootpom.basedir>${basedir}/../../..</rootpom.basedir>
   </properties>
 
   <dependencies>
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAuditAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAuditAppender.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAuditAppender.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractAuditAppender.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractExecutableLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractExecutableLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractExecutableLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractExecutableLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractJobLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractResourceAssociator.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractTransactionalLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractTransactionalLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AbstractTransactionalLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AbstractTransactionalLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AccessTokenLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AccessTokenLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AccessTokenLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AccessTokenLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ApplicationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ApplicationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ApplicationLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ApplicationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ConfigurationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/DomainLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/DomainLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/DomainLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/DomainLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/DynRealmLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/DynRealmLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/DynRealmLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/DynRealmLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ImplementationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/LoggerLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/LogicInvocationHandler.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/LogicInvocationHandler.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/LogicInvocationHandler.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/LogicInvocationHandler.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MailTemplateLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/MemoryAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MemoryAppender.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/MemoryAppender.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/MemoryAppender.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/NotificationLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/PolicyLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RealmLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RelationshipTypeLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RelationshipTypeLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/RelationshipTypeLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RelationshipTypeLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportTemplateLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/RoleLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SchemaLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SecurityQuestionLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SecurityQuestionLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/SecurityQuestionLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SecurityQuestionLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UnresolvedReferenceException.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UnresolvedReferenceException.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/UnresolvedReferenceException.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UnresolvedReferenceException.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/audit/AuditAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/AuditAppender.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/audit/AuditAppender.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/AuditAppender.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultAuditAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultAuditAppender.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultAuditAppender.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultAuditAppender.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultRewriteAuditAppender.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultRewriteAuditAppender.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultRewriteAuditAppender.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/DefaultRewriteAuditAppender.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/audit/PassThroughAuditRewritePolicy.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/PassThroughAuditRewritePolicy.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/audit/PassThroughAuditRewritePolicy.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/audit/PassThroughAuditRewritePolicy.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/FopSerializer.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/TextSerializer.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/TextSerializer.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/TextSerializer.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/TextSerializer.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/cocoon/XSLTTransformer.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/ClassPathScanImplementationLookup.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementAccessor.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementAccessor.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementAccessor.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementAccessor.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/EntitlementLoader.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerAccessor.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LoggerLoader.java
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
similarity index 100%
rename from core/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
rename to core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/init/LogicInitializer.java
diff --git a/core/logic/src/main/resources/logic.properties b/core/idrepo/logic/src/main/resources/logic.properties
similarity index 100%
rename from core/logic/src/main/resources/logic.properties
rename to core/idrepo/logic/src/main/resources/logic.properties
diff --git a/core/logic/src/main/resources/logicContext.xml b/core/idrepo/logic/src/main/resources/logicContext.xml
similarity index 100%
rename from core/logic/src/main/resources/logicContext.xml
rename to core/idrepo/logic/src/main/resources/logicContext.xml
diff --git a/ext/camel/logic/pom.xml b/core/idrepo/pom.xml
similarity index 53%
copy from ext/camel/logic/pom.xml
copy to core/idrepo/pom.xml
index d820933..c2ee0b0 100644
--- a/ext/camel/logic/pom.xml
+++ b/core/idrepo/pom.xml
@@ -22,40 +22,23 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope.ext</groupId>
-    <artifactId>syncope-ext-camel</artifactId>
+    <groupId>org.apache.syncope</groupId>
+    <artifactId>syncope-core</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Ext: Camel Logic</name>
-  <description>Apache Syncope Ext: Camel Logic</description>
-  <groupId>org.apache.syncope.ext.camel</groupId>
-  <artifactId>syncope-ext-camel-logic</artifactId>
-  <packaging>jar</packaging>
+  <name>Apache Syncope Core IdRepo</name>
+  <description>Apache Syncope Core IdRepo</description>
+  <groupId>org.apache.syncope.core</groupId>
+  <artifactId>syncope-core-idrepo</artifactId>
+  <packaging>pom</packaging>
   
   <properties>
-    <rootpom.basedir>${basedir}/../../..</rootpom.basedir>
+    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
   </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.syncope.ext.camel</groupId>
-      <artifactId>syncope-ext-camel-provisioning</artifactId>
-      <version>${project.version}</version>
-    </dependency>  
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
+  
+  <modules>
+    <module>logic</module>
+    <module>rest-cxf</module>
+  </modules>
 </project>
diff --git a/core/rest-cxf/pom.xml b/core/idrepo/rest-cxf/pom.xml
similarity index 87%
rename from core/rest-cxf/pom.xml
rename to core/idrepo/rest-cxf/pom.xml
index a06224c..96bb398 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/idrepo/rest-cxf/pom.xml
@@ -22,19 +22,19 @@ under the License.
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.apache.syncope</groupId>
-    <artifactId>syncope-core</artifactId>
+    <groupId>org.apache.syncope.core</groupId>
+    <artifactId>syncope-core-idrepo</artifactId>
     <version>3.0.0-SNAPSHOT</version>
   </parent>
 
-  <name>Apache Syncope Core REST CXF</name>
-  <description>Apache Syncope Core REST CXF</description>
-  <groupId>org.apache.syncope.core</groupId>
-  <artifactId>syncope-core-rest-cxf</artifactId>
+  <name>Apache Syncope Core IdRepo REST CXF</name>
+  <description>Apache Syncope Core IdRepo REST CXF</description>
+  <groupId>org.apache.syncope.core.idrepo</groupId>
+  <artifactId>syncope-core-idrepo-rest-cxf</artifactId>
   <packaging>jar</packaging>
   
   <properties>
-    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+    <rootpom.basedir>${basedir}/../../..</rootpom.basedir>
   </properties>
 
   <dependencies>
@@ -113,20 +113,20 @@ under the License.
       <artifactId>cxf-rt-rs-client</artifactId>
     </dependency> 
     <dependency>
-      <groupId>org.apache.syncope.common.idm</groupId>
-      <artifactId>syncope-common-idm-rest-api</artifactId>
+      <groupId>org.apache.syncope.common.idrepo</groupId>
+      <artifactId>syncope-common-idrepo-rest-api</artifactId>
       <version>${project.version}</version>
       <classifier>javadoc</classifier>
     </dependency>
     
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idrepo</groupId>
+      <artifactId>syncope-core-idrepo-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.syncope.common.idm</groupId>
-      <artifactId>syncope-common-idm-rest-api</artifactId>
+      <groupId>org.apache.syncope.common.idrepo</groupId>
+      <artifactId>syncope-common-idrepo-rest-api</artifactId>
       <version>${project.version}</version>
     </dependency>
             
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddDomainFilter.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddDomainFilter.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddDomainFilter.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddDomainFilter.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AddETagFilter.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CheckDomainFilter.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/JavaDocUtils.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/RestServiceExceptionMapper.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SyncopeOpenApiCustomizer.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ThreadLocalCleanupListener.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ThreadLocalCleanupListener.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ThreadLocalCleanupListener.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/ThreadLocalCleanupListener.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/UnwrappedObjectMapper.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemRequest.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemRequest.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemRequest.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemRequest.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemResponse.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemResponse.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemResponse.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchItemResponse.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchProcess.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchProcess.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchProcess.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/batch/BatchProcess.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractAnyService.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractExecutableService.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractExecutableService.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractExecutableService.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractExecutableService.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AbstractServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AccessTokenServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyObjectServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeClassServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeClassServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeClassServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeClassServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/AnyTypeServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ApplicationServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ApplicationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ApplicationServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ApplicationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConfigurationServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConfigurationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConfigurationServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ConfigurationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DomainServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DomainServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DomainServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DomainServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DynRealmServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DynRealmServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DynRealmServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/DynRealmServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/GroupServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/GroupServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/GroupServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/GroupServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ImplementationServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ImplementationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ImplementationServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ImplementationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/LoggerServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/MailTemplateServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/MailTemplateServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/MailTemplateServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/MailTemplateServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/NotificationServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/NotificationServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/NotificationServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/NotificationServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/PolicyServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/PolicyServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/PolicyServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/PolicyServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RealmServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RelationshipTypeServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RelationshipTypeServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RelationshipTypeServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RelationshipTypeServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportTemplateServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportTemplateServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportTemplateServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/ReportTemplateServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RoleServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RoleServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RoleServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/RoleServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SchemaServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SecurityQuestionServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SecurityQuestionServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SecurityQuestionServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SecurityQuestionServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SyncopeServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/TaskServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserSelfServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserSelfServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserSelfServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserSelfServiceImpl.java
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserServiceImpl.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserServiceImpl.java
similarity index 100%
rename from core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserServiceImpl.java
rename to core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/UserServiceImpl.java
diff --git a/core/rest-cxf/src/main/resources/META-INF/cxf/org.apache.cxf.Logger b/core/idrepo/rest-cxf/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
similarity index 100%
rename from core/rest-cxf/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
rename to core/idrepo/rest-cxf/src/main/resources/META-INF/cxf/org.apache.cxf.Logger
diff --git a/core/rest-cxf/src/main/resources/META-INF/web-fragment.xml b/core/idrepo/rest-cxf/src/main/resources/META-INF/web-fragment.xml
similarity index 100%
rename from core/rest-cxf/src/main/resources/META-INF/web-fragment.xml
rename to core/idrepo/rest-cxf/src/main/resources/META-INF/web-fragment.xml
diff --git a/core/rest-cxf/src/main/resources/errorMessages.properties b/core/idrepo/rest-cxf/src/main/resources/errorMessages.properties
similarity index 100%
rename from core/rest-cxf/src/main/resources/errorMessages.properties
rename to core/idrepo/rest-cxf/src/main/resources/errorMessages.properties
diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/idrepo/rest-cxf/src/main/resources/restCXFContext.xml
similarity index 100%
rename from core/rest-cxf/src/main/resources/restCXFContext.xml
rename to core/idrepo/rest-cxf/src/main/resources/restCXFContext.xml
diff --git a/core/rest-cxf/src/main/resources/wadl2html/index.xsl b/core/idrepo/rest-cxf/src/main/resources/wadl2html/index.xsl
similarity index 100%
rename from core/rest-cxf/src/main/resources/wadl2html/index.xsl
rename to core/idrepo/rest-cxf/src/main/resources/wadl2html/index.xsl
diff --git a/core/rest-cxf/src/main/resources/wadl2html/schema.xsl b/core/idrepo/rest-cxf/src/main/resources/wadl2html/schema.xsl
similarity index 100%
rename from core/rest-cxf/src/main/resources/wadl2html/schema.xsl
rename to core/idrepo/rest-cxf/src/main/resources/wadl2html/schema.xsl
diff --git a/core/pom.xml b/core/pom.xml
index 904b52e..9c0687b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -77,6 +77,8 @@ under the License.
   </profiles>
   
   <modules>
+    <module>idrepo</module>
+    <module>idm</module>
     <module>persistence-api</module>
     <module>persistence-jpa</module>
     <module>persistence-jpa-json</module>
@@ -85,9 +87,6 @@ under the License.
     <module>provisioning-java</module>
     <module>workflow-api</module>
     <module>workflow-java</module>
-    <module>logic</module>
-    <module>rest-cxf</module>
     <module>upgrade</module>
   </modules>
-
 </project>
diff --git a/core/spring/pom.xml b/core/spring/pom.xml
index 6e369d4..f392628 100644
--- a/core/spring/pom.xml
+++ b/core/spring/pom.xml
@@ -88,8 +88,8 @@ under the License.
       <version>${project.version}</version>
     </dependency>        
     <dependency>
-      <groupId>org.apache.syncope.common.idm</groupId>
-      <artifactId>syncope-common-idm-rest-api</artifactId>
+      <groupId>org.apache.syncope.common.idrepo</groupId>
+      <artifactId>syncope-common-idrepo-rest-api</artifactId>
       <version>${project.version}</version>
     </dependency>
     
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index b815ce0..865950e 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -39,8 +39,8 @@ under the License.
   
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml
index d820933..38cf26f 100644
--- a/ext/camel/logic/pom.xml
+++ b/ext/camel/logic/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml
index e81d7aa..5617e75 100644
--- a/ext/camel/rest-cxf/pom.xml
+++ b/ext/camel/rest-cxf/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/flowable/logic/pom.xml b/ext/flowable/logic/pom.xml
index b5765df..b529aed 100644
--- a/ext/flowable/logic/pom.xml
+++ b/ext/flowable/logic/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/flowable/rest-cxf/pom.xml b/ext/flowable/rest-cxf/pom.xml
index 20b60c1..638f882 100644
--- a/ext/flowable/rest-cxf/pom.xml
+++ b/ext/flowable/rest-cxf/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/oidcclient/logic/pom.xml b/ext/oidcclient/logic/pom.xml
index 2ad5a96..94c73dc 100644
--- a/ext/oidcclient/logic/pom.xml
+++ b/ext/oidcclient/logic/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
     
diff --git a/ext/oidcclient/rest-cxf/pom.xml b/ext/oidcclient/rest-cxf/pom.xml
index e215ca4..f675f44 100644
--- a/ext/oidcclient/rest-cxf/pom.xml
+++ b/ext/oidcclient/rest-cxf/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/saml2sp/logic/pom.xml b/ext/saml2sp/logic/pom.xml
index 4abfefa..214a6a1 100644
--- a/ext/saml2sp/logic/pom.xml
+++ b/ext/saml2sp/logic/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
       
diff --git a/ext/saml2sp/rest-cxf/pom.xml b/ext/saml2sp/rest-cxf/pom.xml
index 1a9f3f7..048b8ad 100644
--- a/ext/saml2sp/rest-cxf/pom.xml
+++ b/ext/saml2sp/rest-cxf/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/ext/scimv2/logic/pom.xml b/ext/scimv2/logic/pom.xml
index e6ef114..1cfe958 100644
--- a/ext/scimv2/logic/pom.xml
+++ b/ext/scimv2/logic/pom.xml
@@ -40,8 +40,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-logic</artifactId>
+      <groupId>org.apache.syncope.core.idrepo</groupId>
+      <artifactId>syncope-core-idrepo-logic</artifactId>
       <version>${project.version}</version>
     </dependency>
     
diff --git a/ext/scimv2/rest-cxf/pom.xml b/ext/scimv2/rest-cxf/pom.xml
index cfb4471..ac08781 100644
--- a/ext/scimv2/rest-cxf/pom.xml
+++ b/ext/scimv2/rest-cxf/pom.xml
@@ -39,8 +39,8 @@ under the License.
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idrepo</groupId>
+      <artifactId>syncope-core-idrepo-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 0987594..36229f6 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -56,8 +56,8 @@ under the License.
     </dependency>
     
     <dependency>
-      <groupId>org.apache.syncope.core</groupId>
-      <artifactId>syncope-core-rest-cxf</artifactId>
+      <groupId>org.apache.syncope.core.idm</groupId>
+      <artifactId>syncope-core-idm-rest-cxf</artifactId>
       <version>${project.version}</version>
     </dependency>
     <dependency>