diff --git a/adapters/oidc/adapter-core/pom.xml b/adapters/oidc/adapter-core/pom.xml
index 671be97971d..f329803aee6 100755
--- a/adapters/oidc/adapter-core/pom.xml
+++ b/adapters/oidc/adapter-core/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/as7-eap6/as7-adapter-spi/pom.xml b/adapters/oidc/as7-eap6/as7-adapter-spi/pom.xml
index 2820013e733..521793e3fe0 100755
--- a/adapters/oidc/as7-eap6/as7-adapter-spi/pom.xml
+++ b/adapters/oidc/as7-eap6/as7-adapter-spi/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/as7-eap6/as7-adapter/pom.xml b/adapters/oidc/as7-eap6/as7-adapter/pom.xml
index 07a4c4aadb5..2fb76a0e012 100755
--- a/adapters/oidc/as7-eap6/as7-adapter/pom.xml
+++ b/adapters/oidc/as7-eap6/as7-adapter/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/as7-eap6/as7-subsystem/pom.xml b/adapters/oidc/as7-eap6/as7-subsystem/pom.xml
index 3a1149a204c..70fd8b72739 100755
--- a/adapters/oidc/as7-eap6/as7-subsystem/pom.xml
+++ b/adapters/oidc/as7-eap6/as7-subsystem/pom.xml
@@ -21,7 +21,7 @@
org.keycloak
keycloak-parent
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
keycloak-as7-subsystem
diff --git a/adapters/oidc/as7-eap6/pom.xml b/adapters/oidc/as7-eap6/pom.xml
index 16792daeabe..a5f72748734 100755
--- a/adapters/oidc/as7-eap6/pom.xml
+++ b/adapters/oidc/as7-eap6/pom.xml
@@ -4,7 +4,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
Keycloak AS7 / JBoss EAP 6 Integration
diff --git a/adapters/oidc/installed/pom.xml b/adapters/oidc/installed/pom.xml
index b9c0b4c1948..304afd00972 100755
--- a/adapters/oidc/installed/pom.xml
+++ b/adapters/oidc/installed/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jaxrs-oauth-client/pom.xml b/adapters/oidc/jaxrs-oauth-client/pom.xml
index 2dc0b9d3ae7..f89184cb1bd 100755
--- a/adapters/oidc/jaxrs-oauth-client/pom.xml
+++ b/adapters/oidc/jaxrs-oauth-client/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/jetty-adapter-spi/pom.xml b/adapters/oidc/jetty/jetty-adapter-spi/pom.xml
index d02cef173ec..6ffcf2c28ed 100755
--- a/adapters/oidc/jetty/jetty-adapter-spi/pom.xml
+++ b/adapters/oidc/jetty/jetty-adapter-spi/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/jetty-core/pom.xml b/adapters/oidc/jetty/jetty-core/pom.xml
index e2127bdee0a..a78906f7d2e 100755
--- a/adapters/oidc/jetty/jetty-core/pom.xml
+++ b/adapters/oidc/jetty/jetty-core/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/jetty8.1/pom.xml b/adapters/oidc/jetty/jetty8.1/pom.xml
index 8dc67040f84..199e7e99184 100755
--- a/adapters/oidc/jetty/jetty8.1/pom.xml
+++ b/adapters/oidc/jetty/jetty8.1/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/jetty9.1/pom.xml b/adapters/oidc/jetty/jetty9.1/pom.xml
index 8a5aa88cffd..550143ef290 100755
--- a/adapters/oidc/jetty/jetty9.1/pom.xml
+++ b/adapters/oidc/jetty/jetty9.1/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/jetty9.2/pom.xml b/adapters/oidc/jetty/jetty9.2/pom.xml
index 7518633636b..baf84f28a6a 100755
--- a/adapters/oidc/jetty/jetty9.2/pom.xml
+++ b/adapters/oidc/jetty/jetty9.2/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/jetty/pom.xml b/adapters/oidc/jetty/pom.xml
index 7cff9ffa682..86edf07f763 100755
--- a/adapters/oidc/jetty/pom.xml
+++ b/adapters/oidc/jetty/pom.xml
@@ -4,7 +4,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
Keycloak Jetty Integration
diff --git a/adapters/oidc/js/pom.xml b/adapters/oidc/js/pom.xml
index e130bee1cde..24374cc6922 100755
--- a/adapters/oidc/js/pom.xml
+++ b/adapters/oidc/js/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/osgi-adapter/pom.xml b/adapters/oidc/osgi-adapter/pom.xml
index e82bbde9b72..83b8edf1903 100755
--- a/adapters/oidc/osgi-adapter/pom.xml
+++ b/adapters/oidc/osgi-adapter/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/servlet-filter/pom.xml b/adapters/oidc/servlet-filter/pom.xml
index 4f0cecaca63..5c3123a1be2 100755
--- a/adapters/oidc/servlet-filter/pom.xml
+++ b/adapters/oidc/servlet-filter/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/servlet-oauth-client/pom.xml b/adapters/oidc/servlet-oauth-client/pom.xml
index a9fa9e57df9..0487799cc7b 100755
--- a/adapters/oidc/servlet-oauth-client/pom.xml
+++ b/adapters/oidc/servlet-oauth-client/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/spring-boot/pom.xml b/adapters/oidc/spring-boot/pom.xml
index 1a80ae2d32a..3d87a40cd67 100755
--- a/adapters/oidc/spring-boot/pom.xml
+++ b/adapters/oidc/spring-boot/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/spring-security/pom.xml b/adapters/oidc/spring-security/pom.xml
index a234ae16af6..aae11fae6b2 100755
--- a/adapters/oidc/spring-security/pom.xml
+++ b/adapters/oidc/spring-security/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/tomcat/pom.xml b/adapters/oidc/tomcat/pom.xml
index 6a92f563810..80d1a7e392f 100755
--- a/adapters/oidc/tomcat/pom.xml
+++ b/adapters/oidc/tomcat/pom.xml
@@ -4,7 +4,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
Keycloak Tomcat Integration
@@ -14,7 +14,6 @@
pom
- tomcat-adapter-spi
tomcat-core
tomcat6
tomcat7
diff --git a/adapters/oidc/tomcat/tomcat-core/pom.xml b/adapters/oidc/tomcat/tomcat-core/pom.xml
index 5264e2ce686..be7466b2cb2 100755
--- a/adapters/oidc/tomcat/tomcat-core/pom.xml
+++ b/adapters/oidc/tomcat/tomcat-core/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/tomcat/tomcat6/pom.xml b/adapters/oidc/tomcat/tomcat6/pom.xml
index d4d4612e9ae..387f5e907e8 100755
--- a/adapters/oidc/tomcat/tomcat6/pom.xml
+++ b/adapters/oidc/tomcat/tomcat6/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/tomcat/tomcat7/pom.xml b/adapters/oidc/tomcat/tomcat7/pom.xml
index a37271a6844..a153af7baf1 100755
--- a/adapters/oidc/tomcat/tomcat7/pom.xml
+++ b/adapters/oidc/tomcat/tomcat7/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/tomcat/tomcat8/pom.xml b/adapters/oidc/tomcat/tomcat8/pom.xml
index 45f71db3143..96ff52e4ccd 100755
--- a/adapters/oidc/tomcat/tomcat8/pom.xml
+++ b/adapters/oidc/tomcat/tomcat8/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/undertow/pom.xml b/adapters/oidc/undertow/pom.xml
index f97c013013e..6719836db77 100755
--- a/adapters/oidc/undertow/pom.xml
+++ b/adapters/oidc/undertow/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/oidc/wildfly/pom.xml b/adapters/oidc/wildfly/pom.xml
old mode 100644
new mode 100755
index 4650faa8502..899565825f8
--- a/adapters/oidc/wildfly/pom.xml
+++ b/adapters/oidc/wildfly/pom.xml
@@ -4,7 +4,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
Keycloak WildFly Integration
diff --git a/adapters/oidc/wildfly/wf8-subsystem/pom.xml b/adapters/oidc/wildfly/wf8-subsystem/pom.xml
index c1f205c3470..b3e5f191756 100755
--- a/adapters/oidc/wildfly/wf8-subsystem/pom.xml
+++ b/adapters/oidc/wildfly/wf8-subsystem/pom.xml
@@ -21,7 +21,7 @@
org.keycloak
keycloak-parent
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
keycloak-wf8-subsystem
diff --git a/adapters/oidc/wildfly/wildfly-adapter/pom.xml b/adapters/oidc/wildfly/wildfly-adapter/pom.xml
index d1ef366341d..ca270235a3b 100755
--- a/adapters/oidc/wildfly/wildfly-adapter/pom.xml
+++ b/adapters/oidc/wildfly/wildfly-adapter/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
4.0.0
diff --git a/adapters/oidc/wildfly/wildfly-subsystem/pom.xml b/adapters/oidc/wildfly/wildfly-subsystem/pom.xml
index 87b50284ae3..53b6e2add09 100755
--- a/adapters/oidc/wildfly/wildfly-subsystem/pom.xml
+++ b/adapters/oidc/wildfly/wildfly-subsystem/pom.xml
@@ -21,7 +21,7 @@
org.keycloak
keycloak-parent
1.9.0.CR1-SNAPSHOT
- ../../../pom.xml
+ ../../../../pom.xml
keycloak-wildfly-subsystem
diff --git a/adapters/spi/adapter-spi/pom.xml b/adapters/spi/adapter-spi/pom.xml
index d57a5b2e3d6..8704d83cb6e 100755
--- a/adapters/spi/adapter-spi/pom.xml
+++ b/adapters/spi/adapter-spi/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/spi/jboss-adapter-core/pom.xml b/adapters/spi/jboss-adapter-core/pom.xml
index 8b62d2f4b9d..d1c6bf46242 100755
--- a/adapters/spi/jboss-adapter-core/pom.xml
+++ b/adapters/spi/jboss-adapter-core/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/spi/servlet-adapter-spi/pom.xml b/adapters/spi/servlet-adapter-spi/pom.xml
index c2ebb390147..784fde6975a 100755
--- a/adapters/spi/servlet-adapter-spi/pom.xml
+++ b/adapters/spi/servlet-adapter-spi/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/adapters/spi/undertow-adapter-spi/pom.xml b/adapters/spi/undertow-adapter-spi/pom.xml
index a0e4909ce3a..c5e64a68e0c 100755
--- a/adapters/spi/undertow-adapter-spi/pom.xml
+++ b/adapters/spi/undertow-adapter-spi/pom.xml
@@ -5,7 +5,7 @@
keycloak-parent
org.keycloak
1.9.0.CR1-SNAPSHOT
- ../../pom.xml
+ ../../../pom.xml
4.0.0
diff --git a/docbook/auth-server-docs/reference/en/en-US/modules/MigrationFromOlderVersions.xml b/docbook/auth-server-docs/reference/en/en-US/modules/MigrationFromOlderVersions.xml
index f950ead9062..544abfaca45 100755
--- a/docbook/auth-server-docs/reference/en/en-US/modules/MigrationFromOlderVersions.xml
+++ b/docbook/auth-server-docs/reference/en/en-US/modules/MigrationFromOlderVersions.xml
@@ -95,6 +95,15 @@
Feedback in template.ftl has been moved and format has changed slightly.
+
+ Module and Source Code Re-org
+
+ Most of our modules and source code have been consolidated into two maven modules: keycloak-server-spi and
+ keycloak-services. SPI interfaces are in server-spi, implementations are in keycloak-services.
+ All JPA dependent modules have been consolidated under keycloak-model-jpa. Same goes
+ with mongo and infinispan under modules keycloak-model-mongo and keycloak-model-infinispan.
+
+
Migrating to 1.8.0
diff --git a/services/src/main/java/org/keycloak/authentication/AbstractAuthenticationFlowContext.java b/server-spi/src/main/java/org/keycloak/authentication/AbstractAuthenticationFlowContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AbstractAuthenticationFlowContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/AbstractAuthenticationFlowContext.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticationFlow.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlow.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticationFlow.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlow.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticationFlowContext.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticationFlowContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowContext.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticationFlowError.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowError.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticationFlowError.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowError.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticationFlowException.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowException.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticationFlowException.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticationFlowException.java
diff --git a/services/src/main/java/org/keycloak/authentication/Authenticator.java b/server-spi/src/main/java/org/keycloak/authentication/Authenticator.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/Authenticator.java
rename to server-spi/src/main/java/org/keycloak/authentication/Authenticator.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticatorFactory.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticatorFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticatorFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticatorFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/AuthenticatorSpi.java b/server-spi/src/main/java/org/keycloak/authentication/AuthenticatorSpi.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/AuthenticatorSpi.java
rename to server-spi/src/main/java/org/keycloak/authentication/AuthenticatorSpi.java
diff --git a/services/src/main/java/org/keycloak/authentication/ClientAuthenticationFlowContext.java b/server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticationFlowContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ClientAuthenticationFlowContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticationFlowContext.java
diff --git a/services/src/main/java/org/keycloak/authentication/ClientAuthenticator.java b/server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticator.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ClientAuthenticator.java
rename to server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticator.java
diff --git a/services/src/main/java/org/keycloak/authentication/ClientAuthenticatorFactory.java b/server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticatorFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ClientAuthenticatorFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticatorFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/ClientAuthenticatorSpi.java b/server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticatorSpi.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ClientAuthenticatorSpi.java
rename to server-spi/src/main/java/org/keycloak/authentication/ClientAuthenticatorSpi.java
diff --git a/services/src/main/java/org/keycloak/authentication/ConfigurableAuthenticatorFactory.java b/server-spi/src/main/java/org/keycloak/authentication/ConfigurableAuthenticatorFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ConfigurableAuthenticatorFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/ConfigurableAuthenticatorFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/FlowStatus.java b/server-spi/src/main/java/org/keycloak/authentication/FlowStatus.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FlowStatus.java
rename to server-spi/src/main/java/org/keycloak/authentication/FlowStatus.java
diff --git a/services/src/main/java/org/keycloak/authentication/ForkFlowException.java b/server-spi/src/main/java/org/keycloak/authentication/ForkFlowException.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ForkFlowException.java
rename to server-spi/src/main/java/org/keycloak/authentication/ForkFlowException.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormAction.java b/server-spi/src/main/java/org/keycloak/authentication/FormAction.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormAction.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormAction.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormActionFactory.java b/server-spi/src/main/java/org/keycloak/authentication/FormActionFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormActionFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormActionFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormActionSpi.java b/server-spi/src/main/java/org/keycloak/authentication/FormActionSpi.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormActionSpi.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormActionSpi.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormAuthenticator.java b/server-spi/src/main/java/org/keycloak/authentication/FormAuthenticator.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormAuthenticator.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormAuthenticator.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormAuthenticatorFactory.java b/server-spi/src/main/java/org/keycloak/authentication/FormAuthenticatorFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormAuthenticatorFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormAuthenticatorFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormAuthenticatorSpi.java b/server-spi/src/main/java/org/keycloak/authentication/FormAuthenticatorSpi.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormAuthenticatorSpi.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormAuthenticatorSpi.java
diff --git a/services/src/main/java/org/keycloak/authentication/FormContext.java b/server-spi/src/main/java/org/keycloak/authentication/FormContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/FormContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/FormContext.java
diff --git a/services/src/main/java/org/keycloak/authentication/RequiredActionContext.java b/server-spi/src/main/java/org/keycloak/authentication/RequiredActionContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/RequiredActionContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/RequiredActionContext.java
diff --git a/services/src/main/java/org/keycloak/authentication/RequiredActionFactory.java b/server-spi/src/main/java/org/keycloak/authentication/RequiredActionFactory.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/RequiredActionFactory.java
rename to server-spi/src/main/java/org/keycloak/authentication/RequiredActionFactory.java
diff --git a/services/src/main/java/org/keycloak/authentication/RequiredActionProvider.java b/server-spi/src/main/java/org/keycloak/authentication/RequiredActionProvider.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/RequiredActionProvider.java
rename to server-spi/src/main/java/org/keycloak/authentication/RequiredActionProvider.java
diff --git a/services/src/main/java/org/keycloak/authentication/RequiredActionSpi.java b/server-spi/src/main/java/org/keycloak/authentication/RequiredActionSpi.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/RequiredActionSpi.java
rename to server-spi/src/main/java/org/keycloak/authentication/RequiredActionSpi.java
diff --git a/services/src/main/java/org/keycloak/authentication/ValidationContext.java b/server-spi/src/main/java/org/keycloak/authentication/ValidationContext.java
similarity index 100%
rename from services/src/main/java/org/keycloak/authentication/ValidationContext.java
rename to server-spi/src/main/java/org/keycloak/authentication/ValidationContext.java
diff --git a/server-spi/src/main/resources/META-INF/services/org.keycloak.provider.Spi b/server-spi/src/main/resources/META-INF/services/org.keycloak.provider.Spi
index 2bf07b16cb5..445ae17dc80 100755
--- a/server-spi/src/main/resources/META-INF/services/org.keycloak.provider.Spi
+++ b/server-spi/src/main/resources/META-INF/services/org.keycloak.provider.Spi
@@ -27,4 +27,10 @@ org.keycloak.truststore.TruststoreSpi
org.keycloak.connections.httpclient.HttpClientSpi
org.keycloak.models.cache.CacheRealmProviderSpi
org.keycloak.models.cache.CacheUserProviderSpi
+org.keycloak.authentication.AuthenticatorSpi
+org.keycloak.authentication.ClientAuthenticatorSpi
+org.keycloak.authentication.RequiredActionSpi
+org.keycloak.authentication.FormAuthenticatorSpi
+org.keycloak.authentication.FormActionSpi
+
diff --git a/services/src/main/java/org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider.java b/services/src/main/java/org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider.java
index 8113a59e5f7..939980a3efe 100755
--- a/services/src/main/java/org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider.java
+++ b/services/src/main/java/org/keycloak/broker/oidc/AbstractOAuth2IdentityProvider.java
@@ -136,7 +136,7 @@ public abstract class AbstractOAuth2IdentityProvider