diff --git a/adapters/oidc/adapter-core/pom.xml b/adapters/oidc/adapter-core/pom.xml
index 671be97971..f329803aee 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 2820013e73..521793e3fe 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 07a4c4aadb..2fb76a0e01 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 3a1149a204..70fd8b7273 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 16792daeab..a5f7274873 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 b9c0b4c194..304afd0097 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 2dc0b9d3ae..f89184cb1b 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 d02cef173e..6ffcf2c28e 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 e2127bdee0..a78906f7d2 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 8dc67040f8..199e7e9918 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 8a5aa88cff..550143ef29 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 7518633636..baf84f28a6 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 7cff9ffa68..86edf07f76 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 e130bee1cd..24374cc692 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 e82bbde9b7..83b8edf190 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 4f0cecaca6..5c3123a1be 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 a9fa9e57df..0487799cc7 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 1a80ae2d32..3d87a40cd6 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 a234ae16af..aae11fae6b 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 6a92f56381..80d1a7e392 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 5264e2ce68..be7466b2cb 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 d4d4612e9a..387f5e907e 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 a37271a684..a153af7baf 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 45f71db314..96ff52e4cc 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 f97c013013..6719836db7 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 4650faa850..899565825f
--- 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 c1f205c347..b3e5f19175 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 d1ef366341..ca270235a3 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 87b50284ae..53b6e2add0 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 d57a5b2e3d..8704d83cb6 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 8b62d2f4b9..d1c6bf4624 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 c2ebb39014..784fde6975 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 a0e4909ce3..c5e64a68e0 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 f950ead906..544abfaca4 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 2bf07b16cb..445ae17dc8 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 8113a59e5f..939980a3ef 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