keycloak-aplcache

Changes

distribution/modules/src/main/resources/modules/org/bouncycastle/main/module.xml 33(+0 -33)

services/src/main/resources/META-INF/mime.types 6(+0 -6)

Details

diff --git a/core/src/main/java/org/keycloak/util/MimeTypeUtil.java b/core/src/main/java/org/keycloak/util/MimeTypeUtil.java
new file mode 100644
index 0000000..75270bd
--- /dev/null
+++ b/core/src/main/java/org/keycloak/util/MimeTypeUtil.java
@@ -0,0 +1,29 @@
+package org.keycloak.util;
+
+import javax.activation.MimetypesFileTypeMap;
+import java.io.File;
+
+/**
+ * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
+ */
+public class MimeTypeUtil {
+
+    private static MimetypesFileTypeMap map = new MimetypesFileTypeMap();
+    static {
+        map.addMimeTypes("text/css css CSS");
+        map.addMimeTypes("text/javascript js JS");
+        map.addMimeTypes("text/javascript js JS");
+        map.addMimeTypes("image/png png PNG");
+        map.addMimeTypes("image/svg+xml svg SVG");
+        map.addMimeTypes("text/html html htm HTML HTM");
+    }
+
+    public static String getContentType(File file) {
+        return map.getContentType(file);
+    }
+
+    public static String getContentType(String path) {
+        return map.getContentType(path);
+    }
+
+}
diff --git a/core/src/main/java/org/keycloak/Version.java b/core/src/main/java/org/keycloak/Version.java
index a1efa64..7b2c94f 100755
--- a/core/src/main/java/org/keycloak/Version.java
+++ b/core/src/main/java/org/keycloak/Version.java
@@ -12,6 +12,7 @@ import java.util.Properties;
  */
 public class Version {
     public static String VERSION;
+    public static String RESOURCES_VERSION;
     public static String BUILD_TIME;
     public static final String UNKNOWN = "UNKNOWN";
     public static final Version SINGLETON;
@@ -26,6 +27,7 @@ public class Version {
             props.load(is);
             VERSION = props.getProperty("version");
             BUILD_TIME = props.getProperty("build-time");
+            RESOURCES_VERSION = VERSION.toLowerCase();
         } catch (IOException e) {
             VERSION=UNKNOWN;
             BUILD_TIME=UNKNOWN;
diff --git a/distribution/appliance-dist/assembly.xml b/distribution/appliance-dist/assembly.xml
index 37f59db..9001f26 100755
--- a/distribution/appliance-dist/assembly.xml
+++ b/distribution/appliance-dist/assembly.xml
@@ -37,9 +37,6 @@
         <fileSet>
             <directory>${project.build.directory}/unpacked/modules</directory>
             <outputDirectory>keycloak/modules/system/layers/base</outputDirectory>
-            <includes>
-                <include>org/picketlink/**</include>
-            </includes>
         </fileSet>
         <fileSet>
             <directory>${project.build.directory}/unpacked/deployments/auth-server.war/WEB-INF/classes/META-INF
diff --git a/distribution/modules/build.xml b/distribution/modules/build.xml
index 69eb308..208e061 100755
--- a/distribution/modules/build.xml
+++ b/distribution/modules/build.xml
@@ -1,136 +1,365 @@
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2012, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
-
-<project name="module-repository" basedir="." default="all">
-
-    <import file="lib.xml"/>
-
-    <property name="output.dir" value="target"/>
-
-    <target name="all">
-        <antcall target="modules">
-            <param name="mavenized.modules" value="false"/>
-            <param name="output.dir" value="target"/>
-        </antcall>
-    </target>
-
-
-    <target name="modules">
-        <!--
-          ~ Complete list of modules to assemble.
-          ~
-          ~ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-          ~ +++++++   KEEP THIS LIST ALPHABETICAL BY MODULE NAME!   +++++++
-          ~ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-          -->
-
-        <module-def name="net.iharder.base64">
-            <maven-resource group="net.iharder" artifact="base64"/>
-        </module-def>
-
-        <module-def name="org.bouncycastle">
-            <maven-resource group="org.bouncycastle" artifact="bcprov-jdk15on"/>
-        </module-def>
-
-        <module-def name="org.jboss.aesh">
-            <maven-resource group="org.jboss.aesh" artifact="aesh"/>
-        </module-def>
-
-        <module-def name="org.jboss.as.cli">
-            <maven-resource group="org.wildfly.core" artifact="wildfly-cli"/>
-        </module-def>        
-
-        <module-def name="org.keycloak.keycloak-core">
-            <maven-resource group="org.keycloak" artifact="keycloak-core"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-adapter-core">
-            <maven-resource group="org.keycloak" artifact="keycloak-adapter-core"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-jboss-adapter-core">
-            <maven-resource group="org.keycloak" artifact="keycloak-jboss-adapter-core"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-as7-adapter">
-            <maven-resource group="org.keycloak" artifact="keycloak-as7-adapter"/>
-            <maven-resource group="org.keycloak" artifact="keycloak-tomcat-core-adapter"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-undertow-adapter">
-            <maven-resource group="org.keycloak" artifact="keycloak-undertow-adapter"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-wildfly-adapter">
-            <maven-resource group="org.keycloak" artifact="keycloak-wildfly-adapter"/>
-        </module-def>
-
-        <module-def name="org.keycloak.keycloak-subsystem">
-            <maven-resource group="org.keycloak" artifact="keycloak-subsystem"/>
-        </module-def>
-        <module-def name="org.keycloak.keycloak-as7-subsystem">
-            <maven-resource group="org.keycloak" artifact="keycloak-as7-subsystem"/>
-        </module-def>
-        <module-def name="org.picketlink">
-        </module-def>
-        <module-def name="org.picketlink.common">
-            <maven-resource group="org.picketlink" artifact="picketlink-common"/>
-        </module-def>
-        <module-def name="org.picketlink.config">
-            <maven-resource group="org.picketlink" artifact="picketlink-config"/>
-        </module-def>
-        <module-def name="org.picketlink.core">
-            <maven-resource group="org.picketlink" artifact="picketlink-impl"/>
-        </module-def>
-        <module-def name="org.picketlink.core.api">
-            <maven-resource group="org.picketlink" artifact="picketlink-api"/>
-        </module-def>
-        <module-def name="org.picketlink.federation">
-            <maven-resource group="org.picketlink" artifact="picketlink-federation"/>
-        </module-def>
-        <module-def name="org.picketlink.federation.bindings">
-            <maven-resource group="org.picketlink" artifact="picketlink-wildfly-common"/>
-            <maven-resource group="org.picketlink" artifact="picketlink-tomcat-common"/>
-            <maven-resource group="org.picketlink" artifact="picketlink-tomcat5-single"/>
-            <maven-resource group="org.picketlink" artifact="picketlink-jbas-common"/>
-            <maven-resource group="org.picketlink" artifact="picketlink-jbas7-single"/>
-        </module-def>
-        <module-def name="org.picketlink.idm">
-            <maven-resource group="org.picketlink" artifact="picketlink-idm-impl"/>
-        </module-def>
-        <module-def name="org.picketlink.idm.api">
-            <maven-resource group="org.picketlink" artifact="picketlink-idm-api"/>
-        </module-def>
-        <module-def name="org.picketlink.idm.schema">
-            <maven-resource group="org.picketlink" artifact="picketlink-idm-simple-schema"/>
-        </module-def>
-    </target>
-
-    <target name="clean-target">
-        <delete dir="${output.dir}"/>
-    </target>
-
-    <target name="clean" depends="clean-target">
-        <delete file="maven-ant-tasks.jar"/>
-    </target>
-
-</project>
+<!--
+  ~ JBoss, Home of Professional Open Source.
+  ~ Copyright 2012, Red Hat, Inc., and individual contributors
+  ~ as indicated by the @author tags. See the copyright.txt file in the
+  ~ distribution for a full listing of individual contributors.
+  ~
+  ~ This is free software; you can redistribute it and/or modify it
+  ~ under the terms of the GNU Lesser General Public License as
+  ~ published by the Free Software Foundation; either version 2.1 of
+  ~ the License, or (at your option) any later version.
+  ~
+  ~ This software is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  ~ Lesser General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU Lesser General Public
+  ~ License along with this software; if not, write to the Free
+  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  -->
+
+<project name="module-repository" basedir="." default="all">
+
+    <import file="lib.xml"/>
+
+    <property name="output.dir" value="target"/>
+
+    <target name="all">
+        <antcall target="modules">
+            <param name="mavenized.modules" value="false"/>
+            <param name="output.dir" value="target"/>
+        </antcall>
+    </target>
+
+
+    <target name="modules">
+
+        <!-- server min dependencies -->
+
+        <module-def name="org.keycloak.keycloak-core">
+            <maven-resource group="org.keycloak" artifact="keycloak-core"/>
+        </module-def>
+
+        <module-def name="net.iharder.base64">
+            <maven-resource group="net.iharder" artifact="base64"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-broker-core">
+            <maven-resource group="org.keycloak" artifact="keycloak-broker-core"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-broker-oidc">
+            <maven-resource group="org.keycloak" artifact="keycloak-broker-oidc"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-broker-saml">
+            <maven-resource group="org.keycloak" artifact="keycloak-broker-saml"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-core-jaxrs">
+            <maven-resource group="org.keycloak" artifact="keycloak-core-jaxrs"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-services">
+            <maven-resource group="org.keycloak" artifact="keycloak-services"/>
+        </module-def>
+
+        <module-def name="com.google.zxing.core">
+            <maven-resource group="com.google.zxing" artifact="core"/>
+        </module-def>
+
+        <module-def name="com.google.zxing.javase">
+            <maven-resource group="com.google.zxing" artifact="javase"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-invalidation-cache-model">
+            <maven-resource group="org.keycloak" artifact="keycloak-invalidation-cache-model"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-jpa">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-jpa"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-jboss-logging">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-jboss-logging"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-js-adapter">
+            <maven-resource group="org.keycloak" artifact="keycloak-js-adapter"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-social-core">
+            <maven-resource group="org.keycloak" artifact="keycloak-social-core"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-forms-common-freemarker">
+            <maven-resource group="org.keycloak" artifact="keycloak-forms-common-freemarker"/>
+        </module-def>
+
+        <module-def name="org.freemarker">
+            <maven-resource group="org.freemarker" artifact="freemarker"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-forms-common-themes">
+            <maven-resource group="org.keycloak" artifact="keycloak-forms-common-themes"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-account-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-account-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-account-freemarker">
+            <maven-resource group="org.keycloak" artifact="keycloak-account-freemarker"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-email-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-email-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-email-freemarker">
+            <maven-resource group="org.keycloak" artifact="keycloak-email-freemarker"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-login-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-login-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-login-freemarker">
+            <maven-resource group="org.keycloak" artifact="keycloak-login-freemarker"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-timer-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-timer-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-timer-basic">
+            <maven-resource group="org.keycloak" artifact="keycloak-timer-basic"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-export-import-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-export-import-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-export-import-dir">
+            <maven-resource group="org.keycloak" artifact="keycloak-export-import-dir"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-export-import-single-file">
+            <maven-resource group="org.keycloak" artifact="keycloak-export-import-single-file"/>
+        </module-def>
+
+        <!-- server all dependencies -->
+
+        <module-def name="org.keycloak.keycloak-connections-jpa">
+            <maven-resource group="org.keycloak" artifact="keycloak-connections-jpa"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-connections-jpa-liquibase">
+            <maven-resource group="org.keycloak" artifact="keycloak-connections-jpa-liquibase"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-connections-infinispan">
+            <maven-resource group="org.keycloak" artifact="keycloak-connections-infinispan"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-jpa">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-jpa"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-sessions-mem">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-sessions-mem"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-sessions-jpa">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-sessions-jpa"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-sessions-mongo">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-sessions-mongo"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-sessions-infinispan">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-sessions-infinispan"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-invalidation-cache-infinispan">
+            <maven-resource group="org.keycloak" artifact="keycloak-invalidation-cache-infinispan"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-jpa">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-jpa"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-jboss-logging">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-jboss-logging"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-email">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-email"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-social-github">
+            <maven-resource group="org.keycloak" artifact="keycloak-social-github"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-social-google">
+            <maven-resource group="org.keycloak" artifact="keycloak-social-google"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-social-twitter">
+            <maven-resource group="org.keycloak" artifact="keycloak-social-twitter"/>
+        </module-def>
+
+        <module-def name="org.twitter4j">
+            <maven-resource group="org.twitter4j" artifact="twitter4j-core"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-social-facebook">
+            <maven-resource group="org.keycloak" artifact="keycloak-social-facebook"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-ldap-federation">
+            <maven-resource group="org.keycloak" artifact="keycloak-ldap-federation"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-picketlink-api">
+            <maven-resource group="org.keycloak" artifact="keycloak-picketlink-api"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-picketlink-ldap">
+            <maven-resource group="org.keycloak" artifact="keycloak-picketlink-ldap"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-saml-protocol">
+            <maven-resource group="org.keycloak" artifact="keycloak-saml-protocol"/>
+        </module-def>
+
+        <!-- mongo -->
+
+        <module-def name="org.keycloak.keycloak-connections-mongo">
+            <maven-resource group="org.keycloak" artifact="keycloak-connections-mongo"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-model-mongo">
+            <maven-resource group="org.keycloak" artifact="keycloak-model-mongo"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-events-mongo">
+            <maven-resource group="org.keycloak" artifact="keycloak-events-mongo"/>
+        </module-def>
+
+        <module-def name="org.mongodb.mongo-java-driver">
+            <maven-resource group="org.mongodb" artifact="mongo-java-driver"/>
+        </module-def>
+
+        <!-- export/import -->
+
+        <module-def name="org.keycloak.keycloak-export-import-zip">
+            <maven-resource group="org.keycloak" artifact="keycloak-export-import-zip"/>
+        </module-def>
+        <module-def name="de.idyl.winzipaes">
+            <maven-resource group="de.idyl" artifact="winzipaes"/>
+        </module-def>
+
+        <module-def name="org.liquibase">
+            <maven-resource group="org.liquibase" artifact="liquibase-core"/>
+        </module-def>
+
+
+
+
+
+
+        <!-- subsystems -->
+
+        <module-def name="org.keycloak.keycloak-server"></module-def>
+
+        <module-def name="org.jboss.aesh">
+            <maven-resource group="org.jboss.aesh" artifact="aesh"/>
+        </module-def>
+
+        <module-def name="org.jboss.as.cli">
+            <maven-resource group="org.wildfly.core" artifact="wildfly-cli"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-adapter-core">
+            <maven-resource group="org.keycloak" artifact="keycloak-adapter-core"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-jboss-adapter-core">
+            <maven-resource group="org.keycloak" artifact="keycloak-jboss-adapter-core"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-as7-adapter">
+            <maven-resource group="org.keycloak" artifact="keycloak-as7-adapter"/>
+            <maven-resource group="org.keycloak" artifact="keycloak-tomcat-core-adapter"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-undertow-adapter">
+            <maven-resource group="org.keycloak" artifact="keycloak-undertow-adapter"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-wildfly-adapter">
+            <maven-resource group="org.keycloak" artifact="keycloak-wildfly-adapter"/>
+        </module-def>
+
+        <module-def name="org.keycloak.keycloak-subsystem">
+            <maven-resource group="org.keycloak" artifact="keycloak-subsystem"/>
+        </module-def>
+        <module-def name="org.keycloak.keycloak-as7-subsystem">
+            <maven-resource group="org.keycloak" artifact="keycloak-as7-subsystem"/>
+        </module-def>
+        <module-def name="org.picketlink">
+        </module-def>
+        <module-def name="org.picketlink.common">
+            <maven-resource group="org.picketlink" artifact="picketlink-common"/>
+        </module-def>
+        <module-def name="org.picketlink.config">
+            <maven-resource group="org.picketlink" artifact="picketlink-config"/>
+        </module-def>
+        <module-def name="org.picketlink.core">
+            <maven-resource group="org.picketlink" artifact="picketlink-impl"/>
+        </module-def>
+        <module-def name="org.picketlink.core.api">
+            <maven-resource group="org.picketlink" artifact="picketlink-api"/>
+        </module-def>
+        <module-def name="org.picketlink.federation">
+            <maven-resource group="org.picketlink" artifact="picketlink-federation"/>
+        </module-def>
+        <module-def name="org.picketlink.federation.bindings">
+            <maven-resource group="org.picketlink" artifact="picketlink-wildfly-common"/>
+            <maven-resource group="org.picketlink" artifact="picketlink-tomcat-common"/>
+            <maven-resource group="org.picketlink" artifact="picketlink-tomcat5-single"/>
+            <maven-resource group="org.picketlink" artifact="picketlink-jbas-common"/>
+            <maven-resource group="org.picketlink" artifact="picketlink-jbas7-single"/>
+        </module-def>
+        <module-def name="org.picketlink.idm">
+            <maven-resource group="org.picketlink" artifact="picketlink-idm-impl"/>
+        </module-def>
+        <module-def name="org.picketlink.idm.api">
+            <maven-resource group="org.picketlink" artifact="picketlink-idm-api"/>
+        </module-def>
+        <module-def name="org.picketlink.idm.schema">
+            <maven-resource group="org.picketlink" artifact="picketlink-idm-simple-schema"/>
+        </module-def>
+    </target>
+
+    <target name="clean-target">
+        <delete dir="${output.dir}"/>
+    </target>
+
+    <target name="clean" depends="clean-target">
+        <delete file="maven-ant-tasks.jar"/>
+    </target>
+
+</project>
diff --git a/distribution/modules/pom.xml b/distribution/modules/pom.xml
index 60286e6..bf5c7c0 100755
--- a/distribution/modules/pom.xml
+++ b/distribution/modules/pom.xml
@@ -19,11 +19,22 @@
     <dependencies>
         <dependency>
             <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-dependencies-server-all</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
             <artifactId>keycloak-core</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-core-jaxrs</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
             <artifactId>keycloak-adapter-core</artifactId>
             <version>${project.version}</version>
         </dependency>
@@ -53,13 +64,15 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.keycloak</groupId>
-            <artifactId>keycloak-as7-subsystem</artifactId>
+            <groupId>org.keycloak.subsystem</groupId>
+            <artifactId>keycloak-server</artifactId>
             <version>${project.version}</version>
+            <type>war</type>
         </dependency>
         <dependency>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>bcprov-jdk15on</artifactId>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-as7-subsystem</artifactId>
+            <version>${project.version}</version>
         </dependency>
         <dependency>
             <groupId>org.wildfly.core</groupId>
@@ -230,7 +243,7 @@
                         <configuration>
                             <artifactItems>
                                 <artifactItem>
-                                    <groupId>org.keycloak</groupId>
+                                    <groupId>org.keycloak.subsystem</groupId>
                                     <artifactId>keycloak-server</artifactId>
                                     <version>${project.version}</version>
                                     <type>war</type>
diff --git a/distribution/modules/src/main/resources/modules/com/google/zxing/core/main/module.xml b/distribution/modules/src/main/resources/modules/com/google/zxing/core/main/module.xml
new file mode 100755
index 0000000..78a8c49
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/com/google/zxing/core/main/module.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="com.google.zxing.core">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/com/google/zxing/javase/main/module.xml b/distribution/modules/src/main/resources/modules/com/google/zxing/javase/main/module.xml
new file mode 100755
index 0000000..a08a5f9
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/com/google/zxing/javase/main/module.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="com.google.zxing.javase">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="com.google.zxing.core"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/de/idyl/winzipaes/main/module.xml b/distribution/modules/src/main/resources/modules/de/idyl/winzipaes/main/module.xml
new file mode 100755
index 0000000..7d13910
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/de/idyl/winzipaes/main/module.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="de.idyl.winzipaes">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/net/iharder/base64/main/module.xml b/distribution/modules/src/main/resources/modules/net/iharder/base64/main/module.xml
index 5f39dcf..352ee9c 100755
--- a/distribution/modules/src/main/resources/modules/net/iharder/base64/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/net/iharder/base64/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="net.iharder.base64">
     <resources>
diff --git a/distribution/modules/src/main/resources/modules/org/freemarker/main/module.xml b/distribution/modules/src/main/resources/modules/org/freemarker/main/module.xml
new file mode 100755
index 0000000..90b6464
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/freemarker/main/module.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.freemarker">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="javax.api"/>
+        <module name="org.apache.log4j"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/jboss/aesh/main/module.xml b/distribution/modules/src/main/resources/modules/org/jboss/aesh/main/module.xml
old mode 100644
new mode 100755
index 5b3cf8d..6fe34f6
--- a/distribution/modules/src/main/resources/modules/org/jboss/aesh/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/jboss/aesh/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.3" name="org.jboss.aesh">
     <properties>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-api/main/module.xml
new file mode 100755
index 0000000..8432c99
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-api/main/module.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-account-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-freemarker/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-freemarker/main/module.xml
new file mode 100755
index 0000000..1790a85
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-account-freemarker/main/module.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-account-freemarker">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-forms-common-freemarker"/>
+        <module name="org.keycloak.keycloak-account-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-services"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.freemarker"/>
+        <module name="javax.api"/>
+        <module name="javax.ws.rs.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml
index 2af6613..1fee40c 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-adapter-core/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-adapter-core">
     <resources>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml
index e42ded8..b5c6191 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-adapter/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-as7-adapter">
     <resources>
@@ -28,7 +8,7 @@
     </resources>
     <dependencies>
         <module name="javax.api"/>
-        <module name="org.bouncycastle"/>
+        <module name="org.bouncycastle" />
         <module name="org.codehaus.jackson.jackson-core-asl"/>
         <module name="org.codehaus.jackson.jackson-mapper-asl"/>
         <module name="org.codehaus.jackson.jackson-xc"/>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml
index 3760376..50f4234 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-as7-subsystem/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-as7-subsystem">
     <resources>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-core/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-core/main/module.xml
new file mode 100755
index 0000000..4d48a6e
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-core/main/module.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-broker-core">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-oidc/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-oidc/main/module.xml
new file mode 100755
index 0000000..e2cac38
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-oidc/main/module.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-broker-oidc">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-saml/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-saml/main/module.xml
new file mode 100755
index 0000000..f168690
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-broker-saml/main/module.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-broker-saml">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-infinispan/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-infinispan/main/module.xml
new file mode 100755
index 0000000..d6b86d5
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-infinispan/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-connections-infinispan">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.infinispan"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa/main/module.xml
new file mode 100755
index 0000000..070b3b0
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa/main/module.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-connections-jpa">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <exports>
+        <include path="META-INF/**"/>
+    </exports>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="javax.persistence.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="javax.api"/>
+        <module name="org.hibernate" services="import"/>
+        <module name="org.javassist"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml
new file mode 100755
index 0000000..f52bc84
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-jpa-liquibase/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-connections-jpa-liquibase">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-jpa"/>
+        <module name="org.liquibase"/>
+        <module name="javax.persistence.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-mongo/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-mongo/main/module.xml
new file mode 100755
index 0000000..5f4aa72
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-connections-mongo/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-connections-mongo">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.mongodb.mongo-java-driver"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml
index 095e419..c10c776 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-core">
     <resources>
@@ -30,9 +10,10 @@
         <module name="org.codehaus.jackson.jackson-core-asl"/>
         <module name="org.codehaus.jackson.jackson-mapper-asl"/>
         <module name="org.codehaus.jackson.jackson-xc"/>
-        <module name="org.bouncycastle"/>
+        <module name="org.bouncycastle" />
         <module name="net.iharder.base64"/>
         <module name="javax.api"/>
+        <module name="javax.activation.api"/>
     </dependencies>
 
 </module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core-jaxrs/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core-jaxrs/main/module.xml
new file mode 100755
index 0000000..6c99976
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-core-jaxrs/main/module.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-core-jaxrs">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-api/main/module.xml
new file mode 100755
index 0000000..5a9c4f9
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-api/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-email-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-freemarker/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-freemarker/main/module.xml
new file mode 100755
index 0000000..2300349
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-email-freemarker/main/module.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-email-freemarker">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-forms-common-freemarker"/>
+        <module name="org.keycloak.keycloak-email-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-services"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="javax.mail.api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.freemarker"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-api/main/module.xml
new file mode 100755
index 0000000..af1ceeb
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-api/main/module.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-events-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-email/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-email/main/module.xml
new file mode 100755
index 0000000..2091165
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-email/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-events-email">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-email-api"/>
+        <module name="javax.mail.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jboss-logging/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jboss-logging/main/module.xml
new file mode 100755
index 0000000..b786cfc
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jboss-logging/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-events-jboss-logging">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jpa/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jpa/main/module.xml
new file mode 100755
index 0000000..f902c4e
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-jpa/main/module.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-events-jpa">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-connections-jpa"/>
+        <module name="javax.persistence.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.javassist"/>
+        <module name="org.hibernate" services="import"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-mongo/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-mongo/main/module.xml
new file mode 100755
index 0000000..3e20796
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-events-mongo/main/module.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-events-mongo">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-connections-mongo"/>
+        <module name="org.mongodb.mongo-java-driver"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-api/main/module.xml
new file mode 100755
index 0000000..b36c5cb
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-api/main/module.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-export-import-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-dir/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-dir/main/module.xml
new file mode 100755
index 0000000..db4ee60
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-dir/main/module.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-export-import-dir">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model"/>
+        <module name="org.keycloak.keycloak-export-import-api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-single-file/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-single-file/main/module.xml
new file mode 100755
index 0000000..12dfd46
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-single-file/main/module.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-export-import-single-file">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model"/>
+        <module name="org.keycloak.keycloak-export-import-api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-zip/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-zip/main/module.xml
new file mode 100755
index 0000000..1351976
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-export-import-zip/main/module.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-export-import-zip">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model"/>
+        <module name="org.keycloak.keycloak-export-import-api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="de.idyl.winzipaes"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-freemarker/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-freemarker/main/module.xml
new file mode 100755
index 0000000..b3798a3
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-freemarker/main/module.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-forms-common-freemarker">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.freemarker"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-themes/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-themes/main/module.xml
new file mode 100755
index 0000000..e9359dc
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-forms-common-themes/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-forms-common-themes">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-forms-common-freemarker"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.freemarker"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml
new file mode 100755
index 0000000..45729fe
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-infinispan/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-invalidation-cache-infinispan">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model"/>
+        <module name="org.keycloak.keycloak-connections-infinispan"/>
+        <module name="org.infinispan"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-model/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-model/main/module.xml
new file mode 100755
index 0000000..5e222db
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-invalidation-cache-model/main/module.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-invalidation-cache-model">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
index 5ecc097..b84e377 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-jboss-adapter-core/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-jboss-adapter-core">
     <resources>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-js-adapter/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-js-adapter/main/module.xml
new file mode 100755
index 0000000..5a2fdf0
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-js-adapter/main/module.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-js-adapter">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-ldap-federation/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-ldap-federation/main/module.xml
new file mode 100755
index 0000000..5c81548
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-ldap-federation/main/module.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-ldap-federation">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-picketlink-api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.picketlink.common"/>
+        <module name="org.picketlink.idm.api"/>
+        <module name="org.picketlink.idm"/>
+        <module name="org.picketlink.idm.schema"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-api/main/module.xml
new file mode 100755
index 0000000..8fcd75c
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-api/main/module.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-login-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-freemarker/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-freemarker/main/module.xml
new file mode 100755
index 0000000..e7b2d35
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-login-freemarker/main/module.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-login-freemarker">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-forms-common-freemarker"/>
+        <module name="org.keycloak.keycloak-login-api"/>
+        <module name="org.keycloak.keycloak-email-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-services"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.freemarker"/>
+        <module name="javax.api"/>
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-api/main/module.xml
new file mode 100755
index 0000000..30ce763
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-api/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.jboss.logging"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-jpa/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-jpa/main/module.xml
new file mode 100755
index 0000000..5603e02
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-jpa/main/module.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-jpa">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-jpa" services="import"/>
+        <module name="javax.persistence.api"/>
+        <module name="net.iharder.base64"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.javassist"/>
+        <module name="org.hibernate" services="import"/>
+        <module name="org.bouncycastle" />
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-mongo/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-mongo/main/module.xml
new file mode 100755
index 0000000..2017d49
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-mongo/main/module.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-mongo">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-mongo"/>
+        <module name="org.mongodb.mongo-java-driver"/>
+        <module name="net.iharder.base64"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml
new file mode 100755
index 0000000..b17720e
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-infinispan/main/module.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-sessions-infinispan">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-infinispan"/>
+        <module name="org.infinispan"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-jpa/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-jpa/main/module.xml
new file mode 100755
index 0000000..b26bce7
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-jpa/main/module.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-sessions-jpa">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-jpa"/>
+        <module name="javax.persistence.api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+        <module name="org.javassist"/>
+        <module name="org.hibernate" services="import"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mem/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mem/main/module.xml
new file mode 100755
index 0000000..6e6b347
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mem/main/module.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-sessions-mem">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mongo/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mongo/main/module.xml
new file mode 100755
index 0000000..8e56207
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-model-sessions-mongo/main/module.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-model-sessions-mongo">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-connections-mongo"/>
+        <module name="org.mongodb.mongo-java-driver"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-api/main/module.xml
new file mode 100755
index 0000000..b51112b
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-api/main/module.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-picketlink-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-picketlink-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.picketlink.common"/>
+        <module name="org.picketlink.idm.api"/>
+        <module name="org.picketlink.idm"/>
+        <module name="org.picketlink.idm.schema"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-ldap/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-ldap/main/module.xml
new file mode 100755
index 0000000..429188f
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-picketlink-ldap/main/module.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-picketlink-ldap">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-picketlink-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.picketlink.common"/>
+        <module name="org.picketlink.idm.api"/>
+        <module name="org.picketlink.idm"/>
+        <module name="org.picketlink.idm.schema"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-saml-protocol/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-saml-protocol/main/module.xml
new file mode 100755
index 0000000..44f4d75
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-saml-protocol/main/module.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-saml-protocol">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-events-api"/>
+        <module name="org.keycloak.keycloak-account-api"/>
+        <module name="org.keycloak.keycloak-email-api"/>
+        <module name="org.keycloak.keycloak-login-api"/>
+        <module name="org.keycloak.keycloak-services"/>
+        <module name="org.keycloak.keycloak-forms-common-freemarker"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.picketlink.common"/>
+        <module name="org.picketlink.federation"/>
+
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.resteasy.resteasy-crypto"/>
+        <module name="org.jboss.resteasy.resteasy-multipart-provider"/>
+
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml
new file mode 100755
index 0000000..a2efd4a
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-server/main/module.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-server">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-account-api" services="import"/>
+        <module name="org.keycloak.keycloak-account-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-adapter-core" services="import"/>
+        <module name="org.keycloak.keycloak-as7-adapter" services="import"/>
+        <module name="org.keycloak.keycloak-as7-subsystem" services="import"/>
+        <module name="org.keycloak.keycloak-connections-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-connections-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-connections-jpa-liquibase" services="import"/>
+        <module name="org.keycloak.keycloak-connections-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-core" services="import"/>
+        <module name="org.keycloak.keycloak-core-jaxrs" services="import"/>
+        <module name="org.keycloak.keycloak-email-api" services="import"/>
+        <module name="org.keycloak.keycloak-email-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-events-api" services="import"/>
+        <module name="org.keycloak.keycloak-events-email" services="import"/>
+        <module name="org.keycloak.keycloak-events-jboss-logging" services="import"/>
+        <module name="org.keycloak.keycloak-events-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-events-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-api" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-dir" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-single-file" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-zip" services="import"/>
+        <module name="org.keycloak.keycloak-forms-common-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-forms-common-themes" services="import"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model" services="import"/>
+        <module name="org.keycloak.keycloak-jboss-adapter-core" services="import"/>
+        <module name="org.keycloak.keycloak-js-adapter" services="import"/>
+        <module name="org.keycloak.keycloak-ldap-federation" services="import"/>
+        <module name="org.keycloak.keycloak-login-api" services="import"/>
+        <module name="org.keycloak.keycloak-login-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-model-api" services="import"/>
+        <module name="org.keycloak.keycloak-model-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-model-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-mem" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-picketlink-api" services="import"/>
+        <module name="org.keycloak.keycloak-picketlink-ldap" services="import"/>
+        <module name="org.keycloak.keycloak-saml-protocol" services="import"/>
+        <module name="org.keycloak.keycloak-services" export="true" services="import"/>
+        <module name="org.keycloak.keycloak-social-core" services="import"/>
+        <module name="org.keycloak.keycloak-social-facebook" services="import"/>
+        <module name="org.keycloak.keycloak-social-github" services="import"/>
+        <module name="org.keycloak.keycloak-social-google" services="import"/>
+        <module name="org.keycloak.keycloak-social-twitter" services="import"/>
+        <module name="org.keycloak.keycloak-subsystem" services="import"/>
+        <module name="org.keycloak.keycloak-timer-api" services="import"/>
+        <module name="org.keycloak.keycloak-timer-basic" services="import"/>
+        <module name="org.keycloak.keycloak-undertow-adapter" services="import"/>
+        <module name="org.keycloak.keycloak-wildfly-adapter" services="import"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-services/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-services/main/module.xml
new file mode 100755
index 0000000..e98c558
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-services/main/module.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-services">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-account-api" services="import"/>
+        <module name="org.keycloak.keycloak-account-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-broker-core" services="import"/>
+        <module name="org.keycloak.keycloak-broker-oidc" services="import"/>
+        <module name="org.keycloak.keycloak-broker-saml" services="import"/>
+        <module name="org.keycloak.keycloak-connections-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-connections-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-connections-jpa-liquibase" services="import"/>
+        <module name="org.keycloak.keycloak-connections-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-core" services="import"/>
+        <module name="org.keycloak.keycloak-core-jaxrs" services="import"/>
+        <module name="org.keycloak.keycloak-email-api" services="import"/>
+        <module name="org.keycloak.keycloak-email-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-events-api" services="import"/>
+        <module name="org.keycloak.keycloak-events-email" services="import"/>
+        <module name="org.keycloak.keycloak-events-jboss-logging" services="import"/>
+        <module name="org.keycloak.keycloak-events-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-events-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-api" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-dir" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-single-file" services="import"/>
+        <module name="org.keycloak.keycloak-export-import-zip" services="import"/>
+        <module name="org.keycloak.keycloak-forms-common-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-forms-common-themes" services="import"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-invalidation-cache-model" services="import"/>
+        <module name="org.keycloak.keycloak-jboss-adapter-core" services="import"/>
+        <module name="org.keycloak.keycloak-js-adapter" services="import"/>
+        <module name="org.keycloak.keycloak-ldap-federation" services="import"/>
+        <module name="org.keycloak.keycloak-login-api" services="import"/>
+        <module name="org.keycloak.keycloak-login-freemarker" services="import"/>
+        <module name="org.keycloak.keycloak-model-api" services="import"/>
+        <module name="org.keycloak.keycloak-model-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-model-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-infinispan" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-jpa" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-mem" services="import"/>
+        <module name="org.keycloak.keycloak-model-sessions-mongo" services="import"/>
+        <module name="org.keycloak.keycloak-picketlink-api" services="import"/>
+
+        <module name="org.keycloak.keycloak-picketlink-ldap" services="import"/>
+        <module name="org.keycloak.keycloak-saml-protocol" services="import"/>
+        <module name="org.keycloak.keycloak-services" export="true" services="import"/>
+        <module name="org.keycloak.keycloak-social-core" services="import"/>
+        <module name="org.keycloak.keycloak-social-facebook" services="import"/>
+        <module name="org.keycloak.keycloak-social-github" services="import"/>
+        <module name="org.keycloak.keycloak-social-google" services="import"/>
+        <module name="org.keycloak.keycloak-social-twitter" services="import"/>
+        <module name="org.keycloak.keycloak-timer-api" services="import"/>
+        <module name="org.keycloak.keycloak-timer-basic" services="import"/>
+
+        <module name="javax.ws.rs.api"/>
+        <module name="org.jboss.resteasy.resteasy-jaxrs"/>
+        <module name="org.jboss.resteasy.resteasy-crypto"/>
+        <module name="org.jboss.resteasy.resteasy-multipart-provider"/>
+        <module name="javax.servlet.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+        <module name="com.google.zxing.core"/>
+        <module name="com.google.zxing.javase"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.bouncycastle" />
+        <module name="net.iharder.base64"/>
+        <module name="javax.api"/>
+        <module name="javax.activation.api"/>
+        <module name="org.apache.httpcomponents"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-core/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-core/main/module.xml
new file mode 100755
index 0000000..76b344d
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-core/main/module.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-social-core">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+        <module name="org.jboss.logging"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="javax.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-facebook/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-facebook/main/module.xml
new file mode 100755
index 0000000..a3db93e
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-facebook/main/module.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-social-facebook">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+        <module name="org.keycloak.keycloak-broker-oidc"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-github/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-github/main/module.xml
new file mode 100755
index 0000000..ad22239
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-github/main/module.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-social-github">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+        <module name="org.keycloak.keycloak-broker-oidc"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-google/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-google/main/module.xml
new file mode 100755
index 0000000..e1ba05b
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-google/main/module.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-social-google">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+        <module name="org.keycloak.keycloak-broker-oidc"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-twitter/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-twitter/main/module.xml
new file mode 100755
index 0000000..3f67efe
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-social-twitter/main/module.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-social-twitter">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.keycloak.keycloak-social-core"/>
+        <module name="org.keycloak.keycloak-broker-core"/>
+        <module name="org.keycloak.keycloak-broker-oidc"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.twitter4j"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+        <module name="org.codehaus.jackson.jackson-core-asl"/>
+        <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        <module name="org.codehaus.jackson.jackson-xc"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-api/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-api/main/module.xml
new file mode 100755
index 0000000..0140db4
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-api/main/module.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-timer-api">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-basic/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-basic/main/module.xml
new file mode 100755
index 0000000..6147e17
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-timer-basic/main/module.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-timer-basic">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.keycloak.keycloak-timer-api"/>
+        <module name="org.keycloak.keycloak-model-api"/>
+        <module name="org.keycloak.keycloak-core"/>
+        <module name="org.jboss.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-undertow-adapter/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-undertow-adapter/main/module.xml
index 9d19d40..8059df1 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-undertow-adapter/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-undertow-adapter/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-undertow-adapter">
     <resources>
@@ -28,7 +8,7 @@
     </resources>
     <dependencies>
         <module name="javax.api"/>
-        <module name="org.bouncycastle"/>
+        <module name="org.bouncycastle" />
         <module name="org.codehaus.jackson.jackson-core-asl"/>
         <module name="org.codehaus.jackson.jackson-mapper-asl"/>
         <module name="org.codehaus.jackson.jackson-xc"/>
diff --git a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-wildfly-adapter/main/module.xml b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-wildfly-adapter/main/module.xml
index a89bac4..4402e8a 100755
--- a/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-wildfly-adapter/main/module.xml
+++ b/distribution/modules/src/main/resources/modules/org/keycloak/keycloak-wildfly-adapter/main/module.xml
@@ -1,26 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!--
-  ~ JBoss, Home of Professional Open Source.
-  ~ Copyright 2010, Red Hat, Inc., and individual contributors
-  ~ as indicated by the @author tags. See the copyright.txt file in the
-  ~ distribution for a full listing of individual contributors.
-  ~
-  ~ This is free software; you can redistribute it and/or modify it
-  ~ under the terms of the GNU Lesser General Public License as
-  ~ published by the Free Software Foundation; either version 2.1 of
-  ~ the License, or (at your option) any later version.
-  ~
-  ~ This software is distributed in the hope that it will be useful,
-  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
-  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  ~ Lesser General Public License for more details.
-  ~
-  ~ You should have received a copy of the GNU Lesser General Public
-  ~ License along with this software; if not, write to the Free
-  ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-  ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-  -->
+
 
 <module xmlns="urn:jboss:module:1.1" name="org.keycloak.keycloak-wildfly-adapter">
     <resources>
@@ -28,7 +8,7 @@
     </resources>
     <dependencies>
         <module name="javax.api"/>
-        <module name="org.bouncycastle"/>
+        <module name="org.bouncycastle" />
         <module name="org.codehaus.jackson.jackson-core-asl"/>
         <module name="org.codehaus.jackson.jackson-mapper-asl"/>
         <module name="org.codehaus.jackson.jackson-xc"/>
diff --git a/distribution/modules/src/main/resources/modules/org/liquibase/main/module.xml b/distribution/modules/src/main/resources/modules/org/liquibase/main/module.xml
new file mode 100755
index 0000000..23826c4
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/liquibase/main/module.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.liquibase">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="org.apache.commons.logging"/>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/mongodb/mongo-java-driver/main/module.xml b/distribution/modules/src/main/resources/modules/org/mongodb/mongo-java-driver/main/module.xml
new file mode 100755
index 0000000..d07ac5d
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/mongodb/mongo-java-driver/main/module.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.mongodb.mongo-java-driver">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/modules/src/main/resources/modules/org/twitter4j/main/module.xml b/distribution/modules/src/main/resources/modules/org/twitter4j/main/module.xml
new file mode 100755
index 0000000..887a044
--- /dev/null
+++ b/distribution/modules/src/main/resources/modules/org/twitter4j/main/module.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+
+<module xmlns="urn:jboss:module:1.1" name="org.twitter4j">
+    <resources>
+        <!-- Insert resources here -->
+    </resources>
+    <dependencies>
+        <module name="javax.api"/>
+    </dependencies>
+
+</module>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index f728364..dd6a947 100755
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -25,6 +25,7 @@
         </plugins>
     </build>
     <modules>
+        <module>subsystem-war</module>
         <module>modules</module>
         <module>as7-adapter-zip</module>
         <module>tomcat6-adapter-zip</module>
diff --git a/distribution/subsystem-war/pom.xml b/distribution/subsystem-war/pom.xml
new file mode 100755
index 0000000..18b0dfd
--- /dev/null
+++ b/distribution/subsystem-war/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <parent>
+        <artifactId>keycloak-parent</artifactId>
+        <groupId>org.keycloak</groupId>
+        <version>1.2.0.Beta1-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.keycloak.subsystem</groupId>
+    <artifactId>keycloak-server</artifactId>
+    <packaging>war</packaging>
+    <name>Keycloak Subsystem Server WAR</name>
+    <description/>
+
+    <dependencies>
+    </dependencies>
+
+    <build>
+        <finalName>auth-server</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.jboss.as.plugins</groupId>
+                <artifactId>jboss-as-maven-plugin</artifactId>
+                <configuration>
+                    <skip>false</skip>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.wildfly.plugins</groupId>
+                <artifactId>wildfly-maven-plugin</artifactId>
+                <configuration>
+                    <skip>false</skip>
+                </configuration>
+            </plugin>            
+        </plugins>
+    </build>
+</project>
diff --git a/distribution/subsystem-war/src/main/resources/META-INF/keycloak-server.json b/distribution/subsystem-war/src/main/resources/META-INF/keycloak-server.json
new file mode 100755
index 0000000..9f0d03e
--- /dev/null
+++ b/distribution/subsystem-war/src/main/resources/META-INF/keycloak-server.json
@@ -0,0 +1,72 @@
+{
+    "admin": {
+        "realm": "master"
+    },
+
+    "eventsStore": {
+        "provider": "jpa",
+        "jpa": {
+            "exclude-events": [ "REFRESH_TOKEN" ]
+        }
+    },
+
+    "realm": {
+        "provider": "jpa"
+    },
+
+    "user": {
+        "provider": "jpa"
+    },
+
+    "userSessions": {
+        "provider" : "mem"
+    },
+
+    "realmCache": {
+        "provider": "mem"
+    },
+
+    "userCache": {
+        "provider": "mem",
+        "mem": {
+            "maxSize": 20000
+        }
+    },
+
+    "timer": {
+        "provider": "basic"
+    },
+
+    "theme": {
+        "default": "keycloak",
+        "staticMaxAge": 2592000,
+        "cacheTemplates": true,
+        "cacheThemes": true,
+        "folder": {
+          "dir": "${jboss.server.config.dir}/themes"
+        }
+    },
+
+    "login": {
+        "provider": "freemarker"
+    },
+
+    "account": {
+        "provider": "freemarker"
+    },
+
+    "email": {
+        "provider": "freemarker"
+    },
+
+    "scheduled": {
+        "interval": 900
+    },
+
+    "connectionsJpa": {
+        "default": {
+            "dataSource": "java:jboss/datasources/KeycloakDS",
+            "databaseSchema": "update"
+        }
+    }
+}
\ No newline at end of file
diff --git a/distribution/subsystem-war/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/distribution/subsystem-war/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
new file mode 100755
index 0000000..356b953
--- /dev/null
+++ b/distribution/subsystem-war/src/main/webapp/WEB-INF/jboss-deployment-structure.xml
@@ -0,0 +1,71 @@
+<jboss-deployment-structure>
+    <deployment>
+        <dependencies>
+            <module name="org.keycloak.keycloak-account-api" services="import"/>
+            <module name="org.keycloak.keycloak-account-freemarker" services="import"/>
+            <module name="org.keycloak.keycloak-connections-infinispan" services="import"/>
+            <module name="org.keycloak.keycloak-connections-jpa" services="import" meta-inf="import"/>
+            <module name="org.keycloak.keycloak-connections-jpa-liquibase" services="import"/>
+            <module name="org.keycloak.keycloak-connections-mongo" services="import"/>
+            <module name="org.keycloak.keycloak-core" services="import"/>
+            <module name="org.keycloak.keycloak-core-jaxrs" services="import"/>
+            <module name="org.keycloak.keycloak-email-api" services="import"/>
+            <module name="org.keycloak.keycloak-email-freemarker" services="import"/>
+            <module name="org.keycloak.keycloak-events-api" services="import"/>
+            <module name="org.keycloak.keycloak-events-email" services="import"/>
+            <module name="org.keycloak.keycloak-events-jboss-logging" services="import"/>
+            <module name="org.keycloak.keycloak-events-jpa" services="import"/>
+            <module name="org.keycloak.keycloak-events-mongo" services="import"/>
+            <module name="org.keycloak.keycloak-export-import-api" services="import"/>
+            <module name="org.keycloak.keycloak-export-import-dir" services="import"/>
+            <module name="org.keycloak.keycloak-export-import-single-file" services="import"/>
+            <module name="org.keycloak.keycloak-export-import-zip" services="import"/>
+            <module name="org.keycloak.keycloak-forms-common-freemarker" services="import"/>
+            <module name="org.keycloak.keycloak-forms-common-themes" services="import"/>
+            <module name="org.keycloak.keycloak-invalidation-cache-infinispan" services="import"/>
+            <module name="org.keycloak.keycloak-invalidation-cache-model" services="import"/>
+            <module name="org.keycloak.keycloak-jboss-adapter-core" services="import"/>
+            <module name="org.keycloak.keycloak-js-adapter" services="import"/>
+            <module name="org.keycloak.keycloak-ldap-federation" services="import"/>
+            <module name="org.keycloak.keycloak-login-api" services="import"/>
+            <module name="org.keycloak.keycloak-login-freemarker" services="import"/>
+            <module name="org.keycloak.keycloak-model-api" services="import"/>
+            <module name="org.keycloak.keycloak-model-jpa" services="import"/>
+            <module name="org.keycloak.keycloak-model-mongo" services="import"/>
+            <module name="org.keycloak.keycloak-model-sessions-infinispan" services="import"/>
+            <module name="org.keycloak.keycloak-model-sessions-jpa" services="import"/>
+            <module name="org.keycloak.keycloak-model-sessions-mem" services="import"/>
+            <module name="org.keycloak.keycloak-model-sessions-mongo" services="import"/>
+            <module name="org.keycloak.keycloak-picketlink-api" services="import"/>
+
+            <module name="org.keycloak.keycloak-picketlink-ldap" services="import"/>
+            <module name="org.keycloak.keycloak-saml-protocol" services="import"/>
+            <module name="org.keycloak.keycloak-services" export="true" services="import"/>
+            <module name="org.keycloak.keycloak-social-core" services="import"/>
+            <module name="org.keycloak.keycloak-social-facebook" services="import"/>
+            <module name="org.keycloak.keycloak-social-github" services="import"/>
+            <module name="org.keycloak.keycloak-social-google" services="import"/>
+            <module name="org.keycloak.keycloak-social-twitter" services="import"/>
+            <module name="org.keycloak.keycloak-timer-api" services="import"/>
+            <module name="org.keycloak.keycloak-timer-basic" services="import"/>
+            <module name="org.hibernate" services="import"/>
+            <module name="org.bouncycastle"/>
+
+            <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import"/>
+            <module name="org.codehaus.jackson.jackson-core-asl"/>
+            <module name="org.codehaus.jackson.jackson-mapper-asl"/>
+        </dependencies>
+        <exclusions>
+            <module name="org.jboss.resteasy.resteasy-jackson2-provider"/>
+
+            <!-- Exclude keycloak modules -->
+            <module name="org.keycloak.keycloak-core" />
+            <module name="org.keycloak.keycloak-adapter-core" />
+            <module name="org.keycloak.keycloak-undertow-adapter" />
+            <module name="org.keycloak.keycloak-as7-adapter" />
+        </exclusions>
+        <exclude-subsystems>
+            <subsystem name="webservices"/>
+        </exclude-subsystems>
+    </deployment>
+</jboss-deployment-structure>
\ No newline at end of file
diff --git a/distribution/subsystem-war/src/main/webapp/WEB-INF/web.xml b/distribution/subsystem-war/src/main/webapp/WEB-INF/web.xml
new file mode 100755
index 0000000..7228afe
--- /dev/null
+++ b/distribution/subsystem-war/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
+      version="3.0">
+
+	<module-name>auth</module-name>
+
+    <servlet>
+        <servlet-name>Keycloak REST Interface</servlet-name>
+        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher</servlet-class>
+        <init-param>
+            <param-name>javax.ws.rs.Application</param-name>
+            <param-value>org.keycloak.services.resources.KeycloakApplication</param-value>
+        </init-param>
+        <init-param>
+            <param-name>resteasy.servlet.mapping.prefix</param-name>
+            <param-value>/</param-value>
+        </init-param>
+        <load-on-startup>1</load-on-startup>
+        <async-supported>true</async-supported>
+    </servlet>
+
+    <listener>
+        <listener-class>org.keycloak.services.listeners.KeycloakSessionDestroyListener</listener-class>
+    </listener>
+
+    <filter>
+        <filter-name>Keycloak Client Connection Filter</filter-name>
+        <filter-class>org.keycloak.services.filters.ClientConnectionFilter</filter-class>
+    </filter>
+
+    <filter>
+        <filter-name>Keycloak Session Management</filter-name>
+        <filter-class>org.keycloak.services.filters.KeycloakSessionServletFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>Keycloak Session Management</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
+    <filter-mapping>
+        <filter-name>Keycloak Client Connection Filter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
+    <servlet-mapping>
+        <servlet-name>Keycloak REST Interface</servlet-name>
+        <url-pattern>/*</url-pattern>
+    </servlet-mapping>
+</web-app>
diff --git a/events/api/src/main/java/org/keycloak/events/Errors.java b/events/api/src/main/java/org/keycloak/events/Errors.java
index 94e5a7e..7f2cb41 100755
--- a/events/api/src/main/java/org/keycloak/events/Errors.java
+++ b/events/api/src/main/java/org/keycloak/events/Errors.java
@@ -37,7 +37,6 @@ public interface Errors {
 
     String FEDERATED_IDENTITY_EMAIL_EXISTS = "federated_identity_email_exists";
     String FEDERATED_IDENTITY_USERNAME_EXISTS = "federated_identity_username_exists";
-    String FEDERATED_IDENTITY_DISABLED_REGISTRATION = "federated_identity_disabled_registration";
     String SSL_REQUIRED = "ssl_required";
 
     String USER_SESSION_NOT_FOUND = "user_session_not_found";
diff --git a/examples/broker/saml-broker-authentication/saml-broker-authentication-realm.json b/examples/broker/saml-broker-authentication/saml-broker-authentication-realm.json
index 1d8e07a..5433cf0 100644
--- a/examples/broker/saml-broker-authentication/saml-broker-authentication-realm.json
+++ b/examples/broker/saml-broker-authentication/saml-broker-authentication-realm.json
@@ -38,7 +38,11 @@
             "adminUrl": "/saml-broker-authentication",
             "baseUrl": "/saml-broker-authentication",
             "redirectUris": [
-              "/saml-broker-authentication/*"
+              "/saml-broker-authentication/*",
+              "http://localhost:8080/saml-broker-authentication/*"
+            ],
+            "webOrigins": [
+              "http://localhost:8080"
             ]
         }
     ],
@@ -51,7 +55,7 @@
           "updateProfileFirstLogin" : "true",
           "storeToken" : "true",
           "config": {
-              "singleSignOnServiceUrl": "http://localhost:8080/auth/realms/saml-broker-realm/protocol/saml",
+              "singleSignOnServiceUrl": "http://localhost:8081/auth/realms/saml-broker-realm/protocol/saml",
               "nameIDPolicyFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
               "signingCertificate": "MIIDdzCCAl+gAwIBAgIEbySuqTANBgkqhkiG9w0BAQsFADBsMRAwDgYDVQQGEwdVbmtub3duMRAwDgYDVQQIEwdVbmtub3duMRAwDgYDVQQHEwdVbmtub3duMRAwDgYDVQQKEwdVbmtub3duMRAwDgYDVQQLEwdVbmtub3duMRAwDgYDVQQDEwdVbmtub3duMB4XDTE1MDEyODIyMTYyMFoXDTE3MTAyNDIyMTYyMFowbDEQMA4GA1UEBhMHVW5rbm93bjEQMA4GA1UECBMHVW5rbm93bjEQMA4GA1UEBxMHVW5rbm93bjEQMA4GA1UEChMHVW5rbm93bjEQMA4GA1UECxMHVW5rbm93bjEQMA4GA1UEAxMHVW5rbm93bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAII/K9NNvXi9IySl7+l2zY/kKrGTtuR4WdCI0xLW/Jn4dLY7v1/HOnV4CC4ecFOzhdNFPtJkmEhP/q62CpmOYOKApXk3tfmm2rwEz9bWprVxgFGKnbrWlz61Z/cjLAlhD3IUj2ZRBquYgSXQPsYfXo1JmSWF5pZ9uh1FVqu9f4wvRqY20ZhUN+39F+1iaBsoqsrbXypCn1HgZkW1/9D9GZug1c3vB4wg1TwZZWRNGtxwoEhdK6dPrNcZ+6PdanVilWrbQFbBjY4wz8/7IMBzssoQ7Usmo8F1Piv0FGfaVeJqBrcAvbiBMpk8pT+27u6p8VyIX6LhGvnxIwM07NByeSUCAwEAAaMhMB8wHQYDVR0OBBYEFFlcNuTYwI9W0tQ224K1gFJlMam0MA0GCSqGSIb3DQEBCwUAA4IBAQB5snl1KWOJALtAjLqD0mLPg1iElmZP82Lq1htLBt3XagwzU9CaeVeCQ7lTp+DXWzPa9nCLhsC3QyrV3/+oqNli8C6NpeqI8FqN2yQW/QMWN1m5jWDbmrWwtQzRUn/rh5KEb5m3zPB+tOC6e/2bV3QeQebxeW7lVMD0tSCviUg1MQf1l2gzuXQo60411YwqrXwk6GMkDOhFDQKDlMchO3oRbQkGbcP8UeiKAXjMeHfzbiBr+cWz8NYZEtxUEDYDjTpKrYCSMJBXpmgVJCZ00BswbksxJwaGqGMPpUKmCV671pf3m8nq3xyiHMDGuGwtbU+GE8kVx85menmp8+964nin",
               "wantAuthnRequestsSigned": true,
diff --git a/examples/broker/saml-broker-authentication/saml-broker-realm.json b/examples/broker/saml-broker-authentication/saml-broker-realm.json
index 016b843..0fc0643 100644
--- a/examples/broker/saml-broker-authentication/saml-broker-realm.json
+++ b/examples/broker/saml-broker-authentication/saml-broker-realm.json
@@ -28,10 +28,10 @@
     },
     "applications": [
         {
-            "name": "http://localhost:8080/auth/",
+            "name": "http://localhost:8081/auth/",
             "enabled": true,
             "redirectUris": [
-              "http://localhost:8080/auth/realms/saml-broker-authentication-realm/broker/saml-identity-provider"
+              "http://localhost:8081/auth/realms/saml-broker-authentication-realm/broker/saml-identity-provider"
             ],
           "attributes": {
             "saml.assertion.signature": "true",
diff --git a/examples/broker/saml-broker-authentication/src/main/webapp/keycloak.json b/examples/broker/saml-broker-authentication/src/main/webapp/keycloak.json
index 3ec9cb8..dccd4a3 100644
--- a/examples/broker/saml-broker-authentication/src/main/webapp/keycloak.json
+++ b/examples/broker/saml-broker-authentication/src/main/webapp/keycloak.json
@@ -2,7 +2,7 @@
   "realm" : "saml-broker-authentication-realm",
   "resource" : "saml-broker-authentication",
   "realm-public-key" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB",
-  "auth-server-url": "http://localhost:8080/auth",
+  "auth-server-url": "http://localhost:8081/auth",
   "ssl-required" : "external",
   "public-client" : true
 }
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
index 054c218..b398b83 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/app.js
@@ -6,13 +6,12 @@ consoleBaseUrl = consoleBaseUrl + "/console";
 var configUrl = consoleBaseUrl + "/config";
 
 var auth = {};
-var authUrl = window.location.href.substring(0, window.location.href.indexOf('/admin/'));
 
 var module = angular.module('keycloak', [ 'keycloak.services', 'keycloak.loaders', 'ui.bootstrap', 'ui.select2', 'angularFileUpload' ]);
 var resourceRequests = 0;
 var loadingTimer = -1;
 
-angular.element(document).ready(function ($http) {
+angular.element(document).ready(function () {
     var keycloakAuth = new Keycloak(configUrl);
 
     keycloakAuth.onAuthLogout = function() {
@@ -58,27 +57,15 @@ module.factory('authInterceptor', function($q, Auth) {
 
 module.config([ '$routeProvider', function($routeProvider) {
     $routeProvider
-        /*
         .when('/create/realm', {
-            templateUrl : 'partials/realm-detail.html',
-            resolve : {
-                realm : function(RealmLoader) {
-                    return {};
-                }
-            },
-            controller : 'RealmDetailCtrl'
-        })
-        */
-
-        .when('/create/realm', {
-            templateUrl : 'partials/realm-create.html',
+            templateUrl : resourceUrl + '/partials/realm-create.html',
             resolve : {
 
             },
             controller : 'RealmCreateCtrl'
         })
         .when('/realms/:realm', {
-            templateUrl : 'partials/realm-detail.html',
+            templateUrl : resourceUrl + '/partials/realm-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -90,7 +77,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmDetailCtrl'
         })
         .when('/realms/:realm/login-settings', {
-            templateUrl : 'partials/realm-login-settings.html',
+            templateUrl : resourceUrl + '/partials/realm-login-settings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -102,7 +89,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmLoginSettingsCtrl'
         })
         .when('/realms/:realm/theme-settings', {
-            templateUrl : 'partials/realm-theme-settings.html',
+            templateUrl : resourceUrl + '/partials/realm-theme-settings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -114,7 +101,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmThemeCtrl'
         })
         .when('/realms/:realm/cache-settings', {
-            templateUrl : 'partials/realm-cache-settings.html',
+            templateUrl : resourceUrl + '/partials/realm-cache-settings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -126,11 +113,11 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmCacheCtrl'
         })
         .when('/realms', {
-            templateUrl : 'partials/realm-list.html',
+            templateUrl : resourceUrl + '/partials/realm-list.html',
             controller : 'RealmListCtrl'
         })
         .when('/realms/:realm/token-settings', {
-            templateUrl : 'partials/realm-tokens.html',
+            templateUrl : resourceUrl + '/partials/realm-tokens.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -139,7 +126,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmTokenDetailCtrl'
         })
         .when('/realms/:realm/keys-settings', {
-            templateUrl : 'partials/realm-keys.html',
+            templateUrl : resourceUrl + '/partials/realm-keys.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -148,7 +135,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmKeysDetailCtrl'
         })
         .when('/realms/:realm/identity-provider-settings', {
-            templateUrl : 'partials/realm-identity-provider.html',
+            templateUrl : resourceUrl + '/partials/realm-identity-provider.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -166,7 +153,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmIdentityProviderCtrl'
         })
         .when('/create/identity-provider/:realm/:provider_id', {
-            templateUrl : function(params){ return 'partials/realm-identity-provider-' + params.provider_id + '.html'; },
+            templateUrl : function(params){ return resourceUrl + '/partials/realm-identity-provider-' + params.provider_id + '.html'; },
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -202,7 +189,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmIdentityProviderCtrl'
         })
         .when('/realms/:realm/default-roles', {
-            templateUrl : 'partials/realm-default-roles.html',
+            templateUrl : resourceUrl + '/partials/realm-default-roles.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -217,7 +204,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmDefaultRolesCtrl'
         })
         .when('/realms/:realm/required-credentials', {
-            templateUrl : 'partials/realm-credentials.html',
+            templateUrl : resourceUrl + '/partials/realm-credentials.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -226,7 +213,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmRequiredCredentialsCtrl'
         })
         .when('/realms/:realm/smtp-settings', {
-            templateUrl : 'partials/realm-smtp.html',
+            templateUrl : resourceUrl + '/partials/realm-smtp.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -235,7 +222,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmSMTPSettingsCtrl'
         })
         .when('/realms/:realm/events', {
-            templateUrl : 'partials/realm-events.html',
+            templateUrl : resourceUrl + '/partials/realm-events.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -244,7 +231,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmEventsCtrl'
         })
         .when('/realms/:realm/events-settings', {
-            templateUrl : 'partials/realm-events-config.html',
+            templateUrl : resourceUrl + '/partials/realm-events-config.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -259,7 +246,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmEventsConfigCtrl'
         })
         .when('/create/user/:realm', {
-            templateUrl : 'partials/user-detail.html',
+            templateUrl : resourceUrl + '/partials/user-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -271,7 +258,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserDetailCtrl'
         })
         .when('/realms/:realm/users/:user', {
-            templateUrl : 'partials/user-detail.html',
+            templateUrl : resourceUrl + '/partials/user-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -283,7 +270,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserDetailCtrl'
         })
         .when('/realms/:realm/users/:user/user-credentials', {
-            templateUrl : 'partials/user-credentials.html',
+            templateUrl : resourceUrl + '/partials/user-credentials.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -295,7 +282,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserCredentialsCtrl'
         })
         .when('/realms/:realm/users/:user/role-mappings', {
-            templateUrl : 'partials/role-mappings.html',
+            templateUrl : resourceUrl + '/partials/role-mappings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -310,7 +297,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserRoleMappingCtrl'
         })
         .when('/realms/:realm/users/:user/sessions', {
-            templateUrl : 'partials/user-sessions.html',
+            templateUrl : resourceUrl + '/partials/user-sessions.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -325,7 +312,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserSessionsCtrl'
         })
         .when('/realms/:realm/users/:user/federated-identity', {
-            templateUrl : 'partials/user-federated-identity.html',
+            templateUrl : resourceUrl + '/partials/user-federated-identity.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -340,7 +327,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserFederatedIdentityCtrl'
         })
         .when('/realms/:realm/users', {
-            templateUrl : 'partials/user-list.html',
+            templateUrl : resourceUrl + '/partials/user-list.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -350,7 +337,7 @@ module.config([ '$routeProvider', function($routeProvider) {
         })
 
         .when('/create/role/:realm', {
-            templateUrl : 'partials/role-detail.html',
+            templateUrl : resourceUrl + '/partials/role-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -368,7 +355,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RoleDetailCtrl'
         })
         .when('/realms/:realm/roles/:role', {
-            templateUrl : 'partials/role-detail.html',
+            templateUrl : resourceUrl + '/partials/role-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -386,7 +373,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RoleDetailCtrl'
         })
         .when('/realms/:realm/roles', {
-            templateUrl : 'partials/role-list.html',
+            templateUrl : resourceUrl + '/partials/role-list.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -399,7 +386,7 @@ module.config([ '$routeProvider', function($routeProvider) {
         })
 
         .when('/create/role/:realm/applications/:application', {
-            templateUrl : 'partials/application-role-detail.html',
+            templateUrl : resourceUrl + '/partials/application-role-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -420,7 +407,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationRoleDetailCtrl'
         })
         .when('/realms/:realm/applications/:application/roles/:role', {
-            templateUrl : 'partials/application-role-detail.html',
+            templateUrl : resourceUrl + '/partials/application-role-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -441,7 +428,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationRoleDetailCtrl'
         })
         .when('/realms/:realm/applications/:application/claims', {
-            templateUrl : 'partials/application-claims.html',
+            templateUrl : resourceUrl + '/partials/application-claims.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -456,7 +443,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationClaimsCtrl'
         })
         .when('/realms/:realm/applications/:application/sessions', {
-            templateUrl : 'partials/application-sessions.html',
+            templateUrl : resourceUrl + '/partials/application-sessions.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -471,7 +458,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationSessionsCtrl'
         })
         .when('/realms/:realm/applications/:application/credentials', {
-            templateUrl : 'partials/application-credentials.html',
+            templateUrl : resourceUrl + '/partials/application-credentials.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -483,7 +470,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationCredentialsCtrl'
         })
         .when('/realms/:realm/applications/:application/identity-provider', {
-            templateUrl : 'partials/application-identity-provider.html',
+            templateUrl : resourceUrl + '/partials/application-identity-provider.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -495,7 +482,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationIdentityProviderCtrl'
         })
         .when('/realms/:realm/applications/:application/clustering', {
-            templateUrl : 'partials/application-clustering.html',
+            templateUrl : resourceUrl + '/partials/application-clustering.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -507,7 +494,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationClusteringCtrl'
         })
         .when('/register-node/realms/:realm/applications/:application/clustering', {
-            templateUrl : 'partials/application-clustering-node.html',
+            templateUrl : resourceUrl + '/partials/application-clustering-node.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -519,7 +506,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationClusteringNodeCtrl'
         })
         .when('/realms/:realm/applications/:application/clustering/:node', {
-            templateUrl : 'partials/application-clustering-node.html',
+            templateUrl : resourceUrl + '/partials/application-clustering-node.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -531,7 +518,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationClusteringNodeCtrl'
         })
         .when('/realms/:realm/applications/:application/saml/keys', {
-            templateUrl : 'partials/application-saml-keys.html',
+            templateUrl : resourceUrl + '/partials/application-saml-keys.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -543,7 +530,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationSamlKeyCtrl'
         })
         .when('/realms/:realm/applications/:application/saml/:keyType/import/:attribute', {
-            templateUrl : 'partials/application-saml-key-import.html',
+            templateUrl : resourceUrl + '/partials/application-saml-key-import.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -555,7 +542,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationCertificateImportCtrl'
         })
         .when('/realms/:realm/applications/:application/saml/:keyType/export/:attribute', {
-            templateUrl : 'partials/application-saml-key-export.html',
+            templateUrl : resourceUrl + '/partials/application-saml-key-export.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -567,7 +554,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationCertificateExportCtrl'
         })
         .when('/realms/:realm/applications/:application/roles', {
-            templateUrl : 'partials/application-role-list.html',
+            templateUrl : resourceUrl + '/partials/application-role-list.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -582,7 +569,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationRoleListCtrl'
         })
         .when('/realms/:realm/applications/:application/revocation', {
-            templateUrl : 'partials/application-revocation.html',
+            templateUrl : resourceUrl + '/partials/application-revocation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -594,7 +581,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationRevocationCtrl'
         })
         .when('/realms/:realm/applications/:application/scope-mappings', {
-            templateUrl : 'partials/application-scope-mappings.html',
+            templateUrl : resourceUrl + '/partials/application-scope-mappings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -609,7 +596,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationScopeMappingCtrl'
         })
         .when('/realms/:realm/applications/:application/installation', {
-            templateUrl : 'partials/application-installation.html',
+            templateUrl : resourceUrl + '/partials/application-installation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -621,7 +608,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationInstallationCtrl'
         })
         .when('/create/application/:realm', {
-            templateUrl : 'partials/application-detail.html',
+            templateUrl : resourceUrl + '/partials/application-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -639,7 +626,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationDetailCtrl'
         })
         .when('/realms/:realm/applications/:application', {
-            templateUrl : 'partials/application-detail.html',
+            templateUrl : resourceUrl + '/partials/application-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -657,7 +644,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationDetailCtrl'
         })
         .when('/realms/:realm/applications', {
-            templateUrl : 'partials/application-list.html',
+            templateUrl : resourceUrl + '/partials/application-list.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -673,7 +660,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'ApplicationListCtrl'
         })
         .when('/import/application/:realm', {
-            templateUrl : 'partials/application-import.html',
+            templateUrl : resourceUrl + '/partials/application-import.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -688,7 +675,7 @@ module.config([ '$routeProvider', function($routeProvider) {
         // OAUTH Client
 
         .when('/realms/:realm/oauth-clients/:oauth/claims', {
-            templateUrl : 'partials/oauth-client-claims.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-claims.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -703,7 +690,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientClaimsCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth/revocation', {
-            templateUrl : 'partials/oauth-client-revocation.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-revocation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -715,7 +702,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientRevocationCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth/credentials', {
-            templateUrl : 'partials/oauth-client-credentials.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-credentials.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -727,7 +714,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientCredentialsCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth/scope-mappings', {
-            templateUrl : 'partials/oauth-client-scope-mappings.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-scope-mappings.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -742,7 +729,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientScopeMappingCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth/installation', {
-            templateUrl : 'partials/oauth-client-installation.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-installation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -757,7 +744,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientInstallationCtrl'
         })
         .when('/create/oauth-client/:realm', {
-            templateUrl : 'partials/oauth-client-detail.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -769,7 +756,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientDetailCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth', {
-            templateUrl : 'partials/oauth-client-detail.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-detail.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -781,7 +768,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientDetailCtrl'
         })
         .when('/realms/:realm/oauth-clients/:oauth/identity-provider', {
-            templateUrl : 'partials/oauth-client-identity-provider.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-identity-provider.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -793,7 +780,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'OAuthClientIdentityProviderCtrl'
         })
         .when('/realms/:realm/oauth-clients', {
-            templateUrl : 'partials/oauth-client-list.html',
+            templateUrl : resourceUrl + '/partials/oauth-client-list.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -806,11 +793,11 @@ module.config([ '$routeProvider', function($routeProvider) {
         })
 
         .when('/', {
-            templateUrl : 'partials/home.html',
+            templateUrl : resourceUrl + '/partials/home.html',
             controller : 'HomeCtrl'
         })
         .when('/mocks/:realm', {
-            templateUrl : 'partials/realm-detail_mock.html',
+            templateUrl : resourceUrl + '/partials/realm-detail_mock.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -822,7 +809,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmDetailCtrl'
         })
         .when('/realms/:realm/sessions/revocation', {
-            templateUrl : 'partials/session-revocation.html',
+            templateUrl : resourceUrl + '/partials/session-revocation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -831,7 +818,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmRevocationCtrl'
         })
          .when('/realms/:realm/sessions/realm', {
-            templateUrl : 'partials/session-realm.html',
+            templateUrl : resourceUrl + '/partials/session-realm.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -843,7 +830,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmSessionStatsCtrl'
         })
         .when('/realms/:realm/user-federation', {
-            templateUrl : 'partials/user-federation.html',
+            templateUrl : resourceUrl + '/partials/user-federation.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -852,7 +839,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'UserFederationCtrl'
         })
         .when('/realms/:realm/user-federation/providers/ldap/:instance', {
-            templateUrl : 'partials/federated-ldap.html',
+            templateUrl : resourceUrl + '/partials/federated-ldap.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -864,7 +851,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'LDAPCtrl'
         })
         .when('/create/user-federation/:realm/providers/ldap', {
-            templateUrl : 'partials/federated-ldap.html',
+            templateUrl : resourceUrl + '/partials/federated-ldap.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -876,7 +863,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'LDAPCtrl'
         })
         .when('/realms/:realm/user-federation/providers/kerberos/:instance', {
-            templateUrl : 'partials/federated-kerberos.html',
+            templateUrl : resourceUrl + '/partials/federated-kerberos.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -891,7 +878,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'GenericUserFederationCtrl'
         })
         .when('/create/user-federation/:realm/providers/kerberos', {
-            templateUrl : 'partials/federated-kerberos.html',
+            templateUrl : resourceUrl + '/partials/federated-kerberos.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -906,7 +893,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'GenericUserFederationCtrl'
         })
         .when('/create/user-federation/:realm/providers/:provider', {
-            templateUrl : 'partials/federated-generic.html',
+            templateUrl : resourceUrl + '/partials/federated-generic.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -923,7 +910,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'GenericUserFederationCtrl'
         })
         .when('/realms/:realm/user-federation/providers/:provider/:instance', {
-            templateUrl : 'partials/federated-generic.html',
+            templateUrl : resourceUrl + '/partials/federated-generic.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -938,7 +925,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'GenericUserFederationCtrl'
         })
         .when('/realms/:realm/defense/headers', {
-            templateUrl : 'partials/defense-headers.html',
+            templateUrl : resourceUrl + '/partials/defense-headers.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -951,7 +938,7 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'DefenseHeadersCtrl'
         })
         .when('/realms/:realm/defense/brute-force', {
-            templateUrl : 'partials/brute-force.html',
+            templateUrl : resourceUrl + '/partials/brute-force.html',
             resolve : {
                 realm : function(RealmLoader) {
                     return RealmLoader();
@@ -960,14 +947,14 @@ module.config([ '$routeProvider', function($routeProvider) {
             controller : 'RealmBruteForceCtrl'
         })
         .when('/server-info', {
-            templateUrl : 'partials/server-info.html'
+            templateUrl : resourceUrl + '/partials/server-info.html'
         })
         .when('/logout', {
-            templateUrl : 'partials/home.html',
+            templateUrl : resourceUrl + '/partials/home.html',
             controller : 'LogoutCtrl'
         })
         .otherwise({
-            templateUrl : 'partials/notfound.html'
+            templateUrl : resourceUrl + '/partials/notfound.html'
         });
 } ]);
 
@@ -1291,7 +1278,7 @@ module.directive('kcDropdown', function ($compile, Notifications) {
         },
         restrict: 'EA',
         replace: true,
-        templateUrl: 'templates/kc-select.html',
+        templateUrl: resourceUrl + '/templates/kc-select.html',
         link: function(scope, element, attr) {
             scope.updateModel = function(item) {
                 scope.kcModel = item;
@@ -1345,7 +1332,7 @@ module.directive('kcNavigation', function ($compile, Notifications) {
         scope: true,
         restrict: 'E',
         replace: true,
-        templateUrl: 'templates/kc-navigation.html',
+        templateUrl: resourceUrl + '/templates/kc-navigation.html',
 
         compile: function(element, attrs){
             if (!attrs.kcSocial) {
@@ -1360,7 +1347,7 @@ module.directive('kcNavigationApplication', function () {
         scope: true,
         restrict: 'E',
         replace: true,
-        templateUrl: 'templates/kc-navigation-application.html',
+        templateUrl: resourceUrl + '/templates/kc-navigation-application.html',
     }
 });
 
@@ -1369,7 +1356,7 @@ module.directive('kcNavigationOauthClient', function () {
         scope: true,
         restrict: 'E',
         replace: true,
-        templateUrl: 'templates/kc-navigation-oauth-client.html',
+        templateUrl: resourceUrl + '/templates/kc-navigation-oauth-client.html',
     }
 });
 
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
index 52b313a..140cbbe 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/realm.js
@@ -4,6 +4,7 @@ module.controller('GlobalCtrl', function($scope, $http, Auth, WhoAmI, Current, $
     };
 
     $scope.authUrl = authUrl;
+    $scope.resourceUrl = resourceUrl;
     $scope.auth = Auth;
     $scope.serverInfo = ServerInfo.get();
     $scope.serverInfoUpdate = function() {
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/services.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/services.js
index 2c50ff7..d131b50 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/services.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/services.js
@@ -20,7 +20,7 @@ module.service('Dialog', function($modal) {
         };
 
         return $modal.open({
-            templateUrl: 'templates/kc-modal.html',
+            templateUrl: resourceUrl + '/templates/kc-modal.html',
             controller: controller,
             resolve: {
                 title: function() {
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-claims.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-claims.html
index a01bc3c..d23887c 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-claims.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-claims.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
@@ -9,7 +9,7 @@
         </ol>
         <h2 data-ng-hide="create"><span>{{application.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2>
         <form class="form-horizontal" name="claimForm">
-            <div data-ng-include data-src="'partials/claims.html'"></div>
+            <div data-ng-include data-src="resourceUrl + '/partials/claims.html'"></div>
             <div class="pull-right form-actions" data-ng-show="access.manageApplications">
                 <button kc-reset data-ng-show="changed">Clear changes</button>
                 <button kc-save  data-ng-show="changed">Save</button>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering.html
index 3d5c850..985260f 100644
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering-node.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering-node.html
index c456ac2..74ef211 100644
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering-node.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-clustering-node.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-credentials.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-credentials.html
index f5b33e4..1d9ab88 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-credentials.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-credentials.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-detail.html
index 1f6b838..a317db0 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-identity-provider.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-identity-provider.html
index 94d79be..57adcd3 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-identity-provider.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-identity-provider.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-import.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-import.html
index 723bf01..4399d3c 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-import.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-import.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li class="active"><a href="">Application Import</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-installation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-installation.html
index e70db27..5a98483 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-installation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-installation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <kc-navigation-application></kc-navigation-application>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-keys.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-keys.html
index b8b232d..1acaa54 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-keys.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-keys.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-list.html
index 27a7d92..92bb4af 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-list.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <h2></h2>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-revocation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-revocation.html
index 7430b50..41e8c11 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-revocation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-revocation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-detail.html
index 48d290d..5145f37 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-list.html
index b9b7011..e10126e 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-role-list.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <kc-navigation-application></kc-navigation-application>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-export.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-export.html
index 692080a..2431612 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-export.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-export.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-import.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-import.html
index e72583e..63e5a96 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-import.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-key-import.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-keys.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-keys.html
index f871bb9..5d9ba63 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-keys.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-saml-keys.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-scope-mappings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-scope-mappings.html
index 19c69d5..852f1f4 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-scope-mappings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-scope-mappings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <kc-navigation-application></kc-navigation-application>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-sessions.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-sessions.html
index 10ee5a5..3284c3a 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-sessions.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/application-sessions.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-application></kc-navigation-application>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/brute-force.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/brute-force.html
index 46ad5b5..f9d5373 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/brute-force.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/brute-force.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf"  data-ng-show="!create">
         <li><a href="#/realms/{{realm.realm}}/defense/headers">Headers</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/defense-headers.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/defense-headers.html
index 67fa0db..194268f 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/defense-headers.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/defense-headers.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li class="active"><a href="#/realms/{{realm.realm}}/defense/headers">Headers</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-generic.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-generic.html
index c504eac..431b392 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-generic.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-generic.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-kerberos.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-kerberos.html
index 1b30221..fe26e8f 100644
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-kerberos.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-kerberos.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-ldap.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-ldap.html
index 35323a6..418ba07 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-ldap.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/federated-ldap.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-claims.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-claims.html
index 997dac6..f330226 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-claims.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-claims.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
@@ -9,7 +9,7 @@
         </ol>
         <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Allowed Claims <span tooltip-placement="right" tooltip="Allows you to restrict which claim information is stored in the access token generated for the application." class="fa fa-info-circle"></span></h2>
         <form class="form-horizontal" name="claimForm">
-            <div data-ng-include data-src="'partials/claims.html'"></div>
+            <div data-ng-include data-src="resourceUrl + '/partials/claims.html'"></div>
             <div class="pull-right form-actions" data-ng-show="access.manageClients">
                 <button kc-reset data-ng-show="changed">Clear changes</button>
                 <button kc-save  data-ng-show="changed">Save</button>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-credentials.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-credentials.html
index f83faf4..9b5db34 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-credentials.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-credentials.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-detail.html
index 1fea625..46daf9f 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-identity-provider.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-identity-provider.html
index 1a14620..92f3e87 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-identity-provider.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-identity-provider.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-installation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-installation.html
index 15ba1de..5a8cd4f 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-installation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-installation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-list.html
index 16eef5c..ebf59a4 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-list.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <h2></h2>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-revocation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-revocation.html
index b36082f..1af3caf 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-revocation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-revocation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-scope-mappings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-scope-mappings.html
index 788525c..f137b5d 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-scope-mappings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/oauth-client-scope-mappings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <kc-navigation-oauth-client></kc-navigation-oauth-client>
     <div id="content">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-cache-settings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-cache-settings.html
index ddc1b88..2567173 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-cache-settings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-cache-settings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-credentials.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-credentials.html
index 1f0e9f5..6dff85c 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-credentials.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-credentials.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <data-kc-navigation data-kc-current="credentials" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-default-roles.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-default-roles.html
index a13e544..d2207f7 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-default-roles.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-default-roles.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail.html
index d431bda..80f8e13 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events.html
index ad3a433..7a66013 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
 
     <ul class="nav nav-tabs nav-tabs-pf">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events-config.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events-config.html
index 1a0e607..9ce707b 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events-config.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-events-config.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
 
     <ul class="nav nav-tabs nav-tabs-pf">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider.html
index 175b8cb..ab7cfa4 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-facebook.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-facebook.html
index d565cfb..a4630ac 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-facebook.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-facebook.html
@@ -1 +1 @@
-<div data-ng-include data-src="'partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
+<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-github.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-github.html
index d565cfb..a4630ac 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-github.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-github.html
@@ -1 +1 @@
-<div data-ng-include data-src="'partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
+<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-google.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-google.html
index d565cfb..a4630ac 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-google.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-google.html
@@ -1 +1 @@
-<div data-ng-include data-src="'partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
+<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-oidc.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-oidc.html
index 8680ac1..d33ffad 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-oidc.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-oidc.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
     <div id="content-area" class="col-sm-9" role="main">
         <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
         <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-saml.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-saml.html
index 2f08e48..af51a48 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-saml.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-saml.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
     <div id="content-area" class="col-sm-9" role="main" data-ng-init="initSamlProvider()">
         <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
         <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-social.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-social.html
index 3e33cc6..d0aadec 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-social.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-social.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
     <div id="content-area" class="col-sm-9" role="main">
         <data-kc-navigation data-kc-current="social" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
         <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-twitter.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-twitter.html
index d565cfb..a4630ac 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-twitter.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-identity-provider-twitter.html
@@ -1 +1 @@
-<div data-ng-include data-src="'partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
+<div data-ng-include data-src="resourceUrl + '/partials/realm-identity-provider-social.html'"></div>
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-keys.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-keys.html
index 52ccfca..ccccbae 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-keys.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-keys.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <data-kc-navigation data-kc-current="keys" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-login-settings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-login-settings.html
index ff318b0..bd1bab9 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-login-settings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-login-settings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-smtp.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-smtp.html
index f19e3c4..fdbc33e 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-smtp.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-smtp.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <data-kc-navigation data-kc-current="email" data-kc-realm="realm.realm" data-kc-social="realm.social"></data-kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-theme-settings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-theme-settings.html
index 2e6f1f7..c08d5f9 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-theme-settings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-theme-settings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <kc-navigation data-kc-current="general" data-kc-realm="realm.realm" data-kc-social="social"></kc-navigation>
     <h2></h2>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-tokens.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-tokens.html
index b2833c9..c322bf2 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-tokens.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/realm-tokens.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf"  data-ng-show="!create">
         <li><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-detail.html
index 06fa783..299b698 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <ul class="nav nav-tabs nav-tabs-pf">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-list.html
index 74a8670..17879ca 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-list.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li class="active"><a href="#/realms/{{realm.realm}}/roles">Realm Roles</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-mappings.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-mappings.html
index 6a07ca7..0ae08be 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-mappings.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/role-mappings.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf"  data-ng-show="!create">
         <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-realm.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-realm.html
index 8730395..1394703 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-realm.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-realm.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li class="active"><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-revocation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-revocation.html
index 866c6fb..c87af7f 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-revocation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/session-revocation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf"  data-ng-show="!create">
         <li><a href="#/realms/{{realm.realm}}/sessions/realm">Realm Sessions</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-credentials.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-credentials.html
index 0efd271..8ca73a6 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-credentials.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-credentials.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <ul class="nav nav-tabs nav-tabs-pf"  data-ng-show="!create">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-detail.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-detail.html
index 5e770a8..8ed77b7 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-detail.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-detail.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
 
     <ul class="nav nav-tabs nav-tabs-pf" data-ng-show="!create">
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
index 845be1f..70a2691 100644
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federated-identity.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federation.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federation.html
index 0d7e4c6..d81ef0c 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federation.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-federation.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 " data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-sm-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users">User List</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
index 3fdd481..df50067 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li class="active"><a href="">User List</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-sessions.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-sessions.html
index a2a8ee0..f3de7e4 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-sessions.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-sessions.html
@@ -1,4 +1,4 @@
-<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-md-3 clearfix" data-ng-include data-src="resourceUrl + '/partials/realm-menu.html'"></div>
 <div id="content-area" class="col-md-9" role="main">
     <ul class="nav nav-tabs nav-tabs-pf">
         <li><a href="#/realms/{{realm.realm}}/users/{{user.username}}">Attributes</a></li>
diff --git a/forms/common-themes/src/main/resources/theme/login/base/messages/messages.properties b/forms/common-themes/src/main/resources/theme/login/base/messages/messages.properties
index 5c5d1f7..3a1c041 100755
--- a/forms/common-themes/src/main/resources/theme/login/base/messages/messages.properties
+++ b/forms/common-themes/src/main/resources/theme/login/base/messages/messages.properties
@@ -56,7 +56,6 @@ emailExists=Email already exists
 
 federatedIdentityEmailExists=User with email already exists. Please login to account management to link the account.
 federatedIdentityUsernameExists=User with username already exists. Please login to account management to link the account.
-federatedIdentityDisabledRegistration=Registration of new users is not allowed. Please ask admin to register you and login to account management to link the account.
 
 loginTitle=Log in to
 loginOauthTitle=Temporary access.
diff --git a/forms/login-freemarker/pom.xml b/forms/login-freemarker/pom.xml
index 637ba88..944157c 100755
--- a/forms/login-freemarker/pom.xml
+++ b/forms/login-freemarker/pom.xml
@@ -62,14 +62,13 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-			<groupId>org.freemarker</groupId>
-			<artifactId>freemarker</artifactId>
+            <groupId>org.freemarker</groupId>
+            <artifactId>freemarker</artifactId>
             <scope>provided</scope>
-		</dependency>
+        </dependency>
         <dependency>
-            <groupId>org.jboss</groupId>
-            <artifactId>jboss-vfs</artifactId>
-            <version>3.2.2.Final</version>
+            <groupId>org.jboss.logging</groupId>
+            <artifactId>jboss-logging</artifactId>
             <scope>provided</scope>
         </dependency>
 	</dependencies>
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
index 13dbe25..ff6e0fc 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/AdminConsole.java
@@ -9,6 +9,8 @@ import org.jboss.resteasy.spi.NotFoundException;
 import org.keycloak.ClientConnection;
 import org.keycloak.Config;
 import org.keycloak.freemarker.BrowserSecurityHeaderSetup;
+import org.keycloak.freemarker.FreeMarkerException;
+import org.keycloak.freemarker.FreeMarkerUtil;
 import org.keycloak.freemarker.Theme;
 import org.keycloak.freemarker.ThemeProvider;
 import org.keycloak.models.AdminRoles;
@@ -24,9 +26,9 @@ import org.keycloak.services.managers.ApplicationManager;
 import org.keycloak.services.managers.AuthenticationManager;
 import org.keycloak.services.managers.RealmManager;
 import org.keycloak.services.resources.KeycloakApplication;
+import org.keycloak.services.resources.flows.Urls;
+import org.keycloak.util.MimeTypeUtil;
 
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -34,9 +36,11 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.CacheControl;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 import javax.ws.rs.ext.Providers;
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -249,7 +253,7 @@ public class AdminConsole {
     @GET
     @NoCache
     public Response logout() {
-        URI redirect = AdminRoot.adminConsoleUrl(uriInfo).path("index.html").build(realm.getName());
+        URI redirect = AdminRoot.adminConsoleUrl(uriInfo).build(realm.getName());
 
         return Response.status(302).location(
                 OIDCLoginProtocolService.logoutUrl(uriInfo).queryParam("redirect_uri", redirect.toString()).build(realm.getName())
@@ -260,8 +264,6 @@ public class AdminConsole {
         return realmManager.getKeycloakAdminstrationRealm();
     }
 
-    private static FileTypeMap mimeTypes = MimetypesFileTypeMap.getDefaultFileTypeMap();
-
     /**
      * Main page of this realm's admin console
      *
@@ -269,72 +271,41 @@ public class AdminConsole {
      * @throws URISyntaxException
      */
     @GET
-    public Response getMainPage() throws URISyntaxException {
+    @NoCache
+    public Response getMainPage() throws URISyntaxException, IOException, FreeMarkerException {
         if (!uriInfo.getRequestUri().getPath().endsWith("/")) {
             return Response.status(302).location(uriInfo.getRequestUriBuilder().path("/").build()).build();
         } else {
-            return getResource("index.html");
-        }
-    }
+            String adminTheme = realm.getAdminTheme();
+            if (adminTheme == null) {
+                adminTheme = "keycloak";
+            }
 
-    /**
-     * Javascript used by admin console
-     *
-     * @return
-     */
-    @GET
-    @Path("js/keycloak.js")
-    @Produces("text/javascript")
-    public Response getKeycloakJs() {
-        InputStream inputStream = getClass().getClassLoader().getResourceAsStream("keycloak.js");
-        if (inputStream != null) {
-            CacheControl cacheControl = new CacheControl();
-            cacheControl.setNoTransform(false);
-            cacheControl.setMaxAge(Config.scope("theme").getInt("staticMaxAge", -1));
-
-            return Response.ok(inputStream).type("text/javascript").cacheControl(cacheControl).build();
-        } else {
-            return Response.status(Response.Status.NOT_FOUND).build();
-        }
-    }
+            Map<String, String> map = new HashMap<String, String>();
 
-    /**
-     * Theme resources for this realm's admin console. (images, html files, etc..)
-     *
-     * @param path
-     * @return
-     */
-    @GET
-    @Path("{path:.+}")
-    public Response getResource(@PathParam("path") String path) {
-        // todo
-        // I don't know why I need this.  On IE 11, if I don't have this, getKeycloakJs() isn't invoked
-        // I just can't figure out what the difference is between IE11 and FF for console/js/keycloak.js calls
-        if (path.equals("js/keycloak.js")) {
-            return getKeycloakJs();
-        }
+            URI baseUri = uriInfo.getBaseUri();
+
+            String authUrl = baseUri.toString();
+            authUrl = authUrl.substring(0, authUrl.length() - 1);
+
+            map.put("authUrl", authUrl);
+            map.put("resourceUrl", Urls.themeRoot(baseUri) + "/admin/" + adminTheme);
 
-        try {
             ThemeProvider themeProvider = session.getProvider(ThemeProvider.class, "extending");
             Theme theme = themeProvider.getTheme(realm.getAdminTheme(), Theme.Type.ADMIN);
-            InputStream resource = theme.getResourceAsStream(path);
-            if (resource != null) {
-                String contentType = mimeTypes.getContentType(path);
-
-                CacheControl cacheControl = new CacheControl();
-                cacheControl.setNoTransform(false);
-                cacheControl.setMaxAge(Config.scope("theme").getInt("staticMaxAge", -1));
-
-                Response.ResponseBuilder builder = Response.ok(resource).type(contentType).cacheControl(cacheControl);
-                BrowserSecurityHeaderSetup.headers(builder, realm);
-                return builder.build();
-            } else {
-                return Response.status(Response.Status.NOT_FOUND).build();
-            }
-        } catch (Exception e) {
-            logger.warn("Failed to get theme resource", e);
-            return Response.serverError().build();
+
+            FreeMarkerUtil freeMarkerUtil = new FreeMarkerUtil();
+            String result = freeMarkerUtil.processTemplate(map, "index.ftl", theme);
+            Response.ResponseBuilder builder = Response.status(Response.Status.OK).type(MediaType.TEXT_HTML).entity(result);
+            BrowserSecurityHeaderSetup.headers(builder, realm);
+            return builder.build();
         }
     }
 
+    @GET
+    @Path("index.html")
+    public Response getIndexHtmlRedirect() {
+        return Response.status(302).location(uriInfo.getRequestUriBuilder().path("../").build()).build();
+    }
+
 }
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
index ecde0fd..f1d3e35 100755
--- a/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/ServerInfoAdminResource.java
@@ -1,5 +1,6 @@
 package org.keycloak.services.resources.admin;
 
+import org.jboss.resteasy.annotations.cache.Cache;
 import org.keycloak.Version;
 import org.keycloak.broker.provider.IdentityProvider;
 import org.keycloak.broker.provider.IdentityProviderFactory;
diff --git a/services/src/main/java/org/keycloak/services/resources/flows/Urls.java b/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
index 2eb1ed4..7889388 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
@@ -22,6 +22,7 @@
 package org.keycloak.services.resources.flows;
 
 import org.keycloak.OAuth2Constants;
+import org.keycloak.Version;
 import org.keycloak.protocol.oidc.OIDCLoginProtocol;
 import org.keycloak.protocol.oidc.OIDCLoginProtocolService;
 import org.keycloak.services.resources.AccountService;
@@ -190,7 +191,7 @@ public class Urls {
     }
 
     public static URI themeRoot(URI baseUri) {
-        return themeBase(baseUri).build();
+        return themeBase(baseUri).path(Version.RESOURCES_VERSION).build();
     }
 
     private static UriBuilder requiredActionsBase(URI baseUri) {
diff --git a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
index 1bbb581..e0a2797 100644
--- a/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
+++ b/services/src/main/java/org/keycloak/services/resources/IdentityBrokerService.java
@@ -526,12 +526,6 @@ public class IdentityBrokerService {
             throw new IdentityBrokerException("federatedIdentityUsernameExists");
         }
 
-        // Check if realm registration is allowed
-        if (!this.realmModel.isRegistrationAllowed()) {
-            fireErrorEvent(Errors.FEDERATED_IDENTITY_DISABLED_REGISTRATION);
-            throw new IdentityBrokerException("federatedIdentityDisabledRegistration");
-        }
-
         if (isDebugEnabled()) {
             LOGGER.debugf("Creating account from identity [%s].", federatedIdentityModel);
         }
diff --git a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
index 19ddaec..488774d 100755
--- a/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/ThemeResource.java
@@ -5,9 +5,8 @@ import org.keycloak.Config;
 import org.keycloak.freemarker.Theme;
 import org.keycloak.freemarker.ThemeProvider;
 import org.keycloak.models.KeycloakSession;
+import org.keycloak.util.MimeTypeUtil;
 
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -21,13 +20,11 @@ import java.io.InputStream;
  *
  * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
  */
-@Path("/theme")
+@Path("/resources")
 public class ThemeResource {
 
     private static final Logger logger = Logger.getLogger(ThemeResource.class);
 
-    private static FileTypeMap mimeTypes = MimetypesFileTypeMap.getDefaultFileTypeMap();
-
     @Context
     private KeycloakSession session;
 
@@ -40,7 +37,7 @@ public class ThemeResource {
      * @return
      */
     @GET
-    @Path("/{themeType}/{themeName}/{path:.*}")
+    @Path("/{version}/{themeType}/{themeName}/{path:.*}")
     public Response getResource(@PathParam("themeType") String themType, @PathParam("themeName") String themeName, @PathParam("path") String path) {
         try {
             ThemeProvider themeProvider = session.getProvider(ThemeProvider.class, "extending");
@@ -51,7 +48,7 @@ public class ThemeResource {
                 cacheControl.setNoTransform(false);
                 cacheControl.setMaxAge(Config.scope("theme").getInt("staticMaxAge", -1));
 
-                return Response.ok(resource).type(mimeTypes.getContentType(path)).cacheControl(cacheControl).build();
+                return Response.ok(resource).type(MimeTypeUtil.getContentType(path)).cacheControl(cacheControl).build();
             } else {
                 return Response.status(Response.Status.NOT_FOUND).build();
             }
diff --git a/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java
index f0f9b50..3feacf1 100755
--- a/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java
@@ -5,9 +5,8 @@ import org.keycloak.Config;
 import org.keycloak.freemarker.Theme;
 import org.keycloak.freemarker.ThemeProvider;
 import org.keycloak.models.KeycloakSession;
+import org.keycloak.util.MimeTypeUtil;
 
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -28,8 +27,6 @@ public class WelcomeResource {
 
     private static final Logger logger = Logger.getLogger(WelcomeResource.class);
 
-    private static FileTypeMap mimeTypes = MimetypesFileTypeMap.getDefaultFileTypeMap();
-
     @Context
     private UriInfo uriInfo;
 
@@ -70,7 +67,7 @@ public class WelcomeResource {
             Theme theme = themeProvider.getTheme(config.get("welcomeTheme"), Theme.Type.WELCOME);
             InputStream resource = theme.getResourceAsStream(path);
             if (resource != null) {
-                String contentType = mimeTypes.getContentType(path);
+                String contentType = MimeTypeUtil.getContentType(path);
 
                 CacheControl cacheControl = new CacheControl();
                 cacheControl.setNoTransform(false);
diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractIdentityProviderTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractIdentityProviderTest.java
index edd0812..473c375 100644
--- a/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractIdentityProviderTest.java
+++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/broker/AbstractIdentityProviderTest.java
@@ -257,32 +257,6 @@ public abstract class AbstractIdentityProviderTest {
         this.updateProfilePage.assertCurrent();
     }
 
-    @Test
-    public void testDisabledRegistration() {
-        // Disable registration in realm
-        getRealm().setRegistrationAllowed(false);
-        brokerServerRule.stopSession(this.session, true);
-        this.session = brokerServerRule.startSession();
-
-        // Login with identity provider
-        this.driver.navigate().to("http://localhost:8081/test-app/");
-        assertTrue(this.driver.getCurrentUrl().startsWith("http://localhost:8081/auth/realms/realm-with-broker/protocol/openid-connect/login"));
-        this.loginPage.clickSocial(getProviderId());
-
-        assertTrue(this.driver.getCurrentUrl().startsWith("http://localhost:8082/auth/"));
-        this.loginPage.login("test-user", "password");
-        doAfterProviderAuthentication();
-
-        WebElement element = this.driver.findElement(By.className("kc-feedback-text"));
-        assertNotNull(element);
-        assertEquals("Registration of new users is not allowed. Please ask admin to register you and login to account management to link the account.", element.getText());
-
-        // Re-enable registration in realm
-        getRealm().setRegistrationAllowed(true);
-        brokerServerRule.stopSession(this.session, true);
-        this.session = brokerServerRule.startSession();
-    }
-
     @Test(expected = NoSuchElementException.class)
     public void testIdentityProviderNotAllowed() {
         this.driver.navigate().to("http://localhost:8081/test-app/");