keycloak-aplcache

KEYCLOAK-2641 moved app-server configurations from adapter

3/24/2016 8:10:37 AM

Changes

testsuite/integration-arquillian/servers/eap7/pom.xml 393(+0 -393)

testsuite/integration-arquillian/servers/eap7/src/main/xslt/datasource.xsl 107(+0 -107)

testsuite/integration-arquillian/servers/eap7/src/main/xslt/security.xsl 72(+0 -72)

testsuite/integration-arquillian/servers/wildfly/src/main/keystore/keycloak.jks 0(+0 -0)

testsuite/integration-arquillian/servers/wildfly/src/main/xslt/add-dialect-logger.xsl 45(+0 -45)

testsuite/integration-arquillian/servers/wildfly/src/main/xslt/datasource-jdbc-url.xsl 36(+0 -36)

testsuite/integration-arquillian/servers/wildfly/src/main/xslt/ispn-cache-owners.xsl 40(+0 -40)

testsuite/integration-arquillian/tests/other/adapters/as7/pom.xml 158(+0 -158)

testsuite/integration-arquillian/tests/other/adapters/as7/src/main/xslt/arquillian.xsl 56(+0 -56)

testsuite/integration-arquillian/tests/other/adapters/eap6/pom.xml 245(+0 -245)

testsuite/integration-arquillian/tests/other/adapters/eap6/src/main/keystore/keycloak.truststore 0(+0 -0)

testsuite/integration-arquillian/tests/other/adapters/eap6/src/main/xslt/arquillian.xsl 54(+0 -54)

testsuite/integration-arquillian/tests/other/adapters/eap6/src/main/xslt/arquillian_jdk.xsl 47(+0 -47)

testsuite/integration-arquillian/tests/other/adapters/eap6/src/main/xslt/security.xsl 51(+0 -51)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/main/keystore/adapter.jks 0(+0 -0)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/main/keystore/keycloak.truststore 0(+0 -0)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/main/xslt/add-adapter-log-level.xsl 50(+0 -50)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/main/xslt/arquillian_jdk.xsl 47(+0 -47)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/test/java/org/keycloak/testsuite/adapter/example/EAP7CorsExampleAdapterTest.java 15(+0 -15)

testsuite/integration-arquillian/tests/other/adapters/eap7/src/test/java/org/keycloak/testsuite/adapter/servlet/EAP7SAMLServletsAdapterTest.java 13(+0 -13)

testsuite/integration-arquillian/tests/other/adapters/karaf/src/main/java/org/keycloak/testsuite/arquillian/karaf/CustomKarafContainer.java 114(+0 -114)

testsuite/integration-arquillian/tests/other/adapters/karaf/src/main/java/org/keycloak/testsuite/arquillian/karaf/CustomKarafContainerConfiguration.java 25(+0 -25)

testsuite/integration-arquillian/tests/other/adapters/karaf/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension 18(+0 -18)

testsuite/integration-arquillian/tests/other/adapters/karaf/src/main/xslt/arquillian.xsl 68(+0 -68)

testsuite/integration-arquillian/tests/other/adapters/wildfly/pom.xml 227(+0 -227)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/keystore/adapter.jks 0(+0 -0)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/keystore/keycloak.truststore 0(+0 -0)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/xslt/add-adapter-log-level.xsl 50(+0 -50)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/xslt/arquillian.xsl 52(+0 -52)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/xslt/security.xsl 72(+0 -72)

testsuite/integration-arquillian/tests/other/adapters/wildfly/src/main/xslt/standalone.xsl 68(+0 -68)

testsuite/integration-arquillian/tests/other/adapters/wildfly8/src/main/xslt/arquillian.xsl 52(+0 -52)

testsuite/integration-arquillian/tests/other/adapters/wildfly-relative/src/main/xslt/standalone.xsl 70(+0 -70)

testsuite/integration-arquillian/tests/other/adapters/wildfly-relative/src/test/java/org/keycloak/testsuite/adapter/servlet/WildflyRelativeSAMLServletsAdapterTest.java 11(+0 -11)

testsuite/integration-arquillian/tests/other/jpa-performance/src/test/resources/log4j.properties 61(+0 -61)

Details

diff --git a/testsuite/integration-arquillian/pom.xml b/testsuite/integration-arquillian/pom.xml
index f63f3ec..8941e6a 100644
--- a/testsuite/integration-arquillian/pom.xml
+++ b/testsuite/integration-arquillian/pom.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0"?>
 <!--
-  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
-  ~ and other contributors as indicated by the @author tags.
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
 
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -34,10 +34,52 @@
 
     <name>Keycloak Arquillian Integration TestSuite</name>
     
-    <modules>
-        <module>servers</module>
-        <module>tests</module>
-    </modules>
+    <properties>
+        
+        <containers.home>${project.build.directory}/containers</containers.home>
+        <auth.server.java.home>${java.home}</auth.server.java.home>
+        <app.server.java.home>${java.home}</app.server.java.home>
+        
+        <!--component versions-->
+        <arquillian-core.version>1.1.11.Final</arquillian-core.version>
+        <selenium.version>2.52.0</selenium.version>
+        <arquillian-drone.version>2.0.0.Beta1</arquillian-drone.version>
+        <arquillian-graphene.version>2.1.0.Alpha3</arquillian-graphene.version>
+        <arquillian-wildfly-container.version>8.2.0.Final</arquillian-wildfly-container.version>
+        <version.shrinkwrap.resolvers>2.2.2</version.shrinkwrap.resolvers>
+
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.jboss.arquillian.selenium</groupId>
+                <artifactId>selenium-bom</artifactId>
+                <version>${selenium.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.arquillian</groupId>
+                <artifactId>arquillian-bom</artifactId>
+                <version>${arquillian-core.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.arquillian.extension</groupId>
+                <artifactId>arquillian-drone-bom</artifactId>
+                <version>${arquillian-drone.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.wildfly</groupId>
+                <artifactId>wildfly-arquillian-container-managed</artifactId>
+                <version>${arquillian-wildfly-container.version}</version>
+            </dependency>        
+        </dependencies>
+    </dependencyManagement>
     
     <build>
         <pluginManagement>
@@ -52,13 +94,13 @@
                     <artifactId>xml-maven-plugin</artifactId>
                     <version>1.0.1</version>
                 </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <version>2.10</version>
-                </plugin>
             </plugins>
         </pluginManagement>
     </build>
     
+    <modules>
+        <module>servers</module>
+        <module>tests</module>
+    </modules>
+    
 </project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/as7/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/as7/pom.xml
new file mode 100644
index 0000000..cdeabbd
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/as7/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-as7</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - JBossAS 7</name>
+    
+    <properties>
+        
+        <!-- NOTE: AS7 doesn't work with JDK 8. Use: -Dapp.server.java.home=PATH_TO_JDK_7_HOME -->
+        
+        <!-- NOTE: SSL configuration doesn't work for AS 7.1.1. See: https://issues.jboss.org/browse/AS7-4698 -->
+        
+        <app.server.jboss>as7</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.jboss.as</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>jboss-as-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${jboss.as.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>jboss-as-${jboss.as.version}</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-as7-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-as7-adapter-dist</app.server.saml.adapter.artifactId>
+        
+        <app.server.java.home>${java7.home}</app.server.java.home>
+    </properties>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>java7.home</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/as7/src/saml-adapter-not-supported b/testsuite/integration-arquillian/servers/app-server/jboss/as7/src/saml-adapter-not-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/as7/src/saml-adapter-not-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.bat b/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.bat
new file mode 100644
index 0000000..b78f873
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.bat
@@ -0,0 +1,35 @@
+set NOPAUSE=true
+
+start "JBoss Server" /b cmd /c %JBOSS_HOME%\bin\standalone.bat
+
+set ERROR=0
+set TIMEOUT=10
+set I=0
+
+ping 127.0.0.1 -n 3 > nul
+
+
+:wait_for_jboss
+call %JBOSS_HOME%\bin\jboss-cli.bat -c --command=":read-attribute(name=server-state)" | findstr "running"
+if %ERRORLEVEL% equ 0 goto install_adapters
+ping 127.0.0.1 -n 1 > nul
+set /a I=%I%+1
+if %I% gtr %TIMEOUT% (
+    set ERROR=1
+    goto shutdown_jboss
+)
+goto wait_for_jboss
+
+
+:install_adapters
+call %JBOSS_HOME%\bin\jboss-cli.bat -c --file="%JBOSS_HOME%\bin\adapter-install.cli"
+if %ERRORLEVEL% neq 0 set ERROR=%ERRORLEVEL%
+if "%SAML_SUPPORTED%" == "true" (
+    call %JBOSS_HOME%\bin\jboss-cli.bat -c --file="%JBOSS_HOME%\bin\adapter-install-saml.cli"
+    if %ERRORLEVEL% neq 0 set ERROR=%ERRORLEVEL%
+)
+
+
+:shutdown_jboss
+call %JBOSS_HOME%\bin\jboss-cli.bat -c --command=":shutdown"
+exit /b %ERROR%
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.sh b/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.sh
new file mode 100755
index 0000000..4605992
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/common/install-adapters.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+echo "JBOSS_HOME=$JBOSS_HOME"
+
+if [ ! -d "$JBOSS_HOME/bin" ] ; then
+    >&2 echo "JBOSS_HOME/bin doesn't exist"
+    exit 1
+fi
+
+cd $JBOSS_HOME/bin
+
+./standalone.sh &
+sleep 3
+
+TIMEOUT=10
+DELAY=1
+T=0
+
+RESULT=0
+
+until [ $T -gt $TIMEOUT ]
+do
+    if ./jboss-cli.sh -c --command=":read-attribute(name=server-state)" | grep -q "running" ; then
+        echo "Server is running. Installing adapter."
+
+        ./jboss-cli.sh -c --file="adapter-install.cli"
+        if [ $? -ne 0 ]; then RESULT=1; fi
+
+        if [ "$SAML_SUPPORTED" = true ]; then
+            ./jboss-cli.sh -c --file="adapter-install-saml.cli"
+            if [ $? -ne 0 ]; then RESULT=1; fi
+        fi
+
+        ./jboss-cli.sh -c --command=":shutdown"
+        rm -rf $JBOSS_HOME/standalone/data
+        rm -rf $JBOSS_HOME/standalone/log
+
+        exit $RESULT
+    fi
+    echo "Server is not running."
+    sleep $DELAY
+    let T=$T+$DELAY
+done
+
+exit 1
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/eap/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/eap/pom.xml
new file mode 100644
index 0000000..a517503
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/eap/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-eap</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - EAP</name>
+    
+    <properties>
+        <app.server.jboss>eap</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.jboss.eap</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>wildfly-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${eap.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>jboss-eap-7.0</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-wildfly-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-wildfly-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/eap/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/eap/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/eap/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/eap6/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/eap6/pom.xml
new file mode 100644
index 0000000..5b816ba
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/eap6/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-eap6</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - EAP 6</name>
+    
+    <properties>
+        <app.server.jboss>eap6</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.jboss.as</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>jboss-as-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${eap6.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>jboss-eap-6.4</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-eap6-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-eap6-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+    
+    <build>
+        <plugins>
+                    
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-auth-server-jboss-profile</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>eap6.version</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/eap6/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/eap6/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/eap6/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/pom.xml
new file mode 100644
index 0000000..1024528
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss-relative</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-relative-eap</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Relative EAP</name>
+    
+    <properties>
+        <auth.server.jboss>eap</auth.server.jboss>
+        <app.server.jboss.artifactId>integration-arquillian-servers-auth-server-eap</app.server.jboss.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/relative/eap/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/relative/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/relative/pom.xml
new file mode 100644
index 0000000..8098c09
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/relative/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-jboss-relative</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Relative</name>
+    
+    <properties>
+        <common.resources>${project.parent.parent.basedir}/common</common.resources>
+        <assembly.xml>${project.parent.parent.basedir}/assembly.xml</assembly.xml>
+        
+        <app.server.jboss>relative-${auth.server.jboss}</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.keycloak.testsuite</app.server.jboss.groupId>
+        <app.server.jboss.version>${project.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>auth-server-${auth.server.jboss}</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-wildfly-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-wildfly-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>auth-server-wildfly</id>
+            <modules>
+                <module>wildfly</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>auth-server-eap</id>
+            <modules>
+                <module>eap</module>
+            </modules>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/pom.xml
new file mode 100644
index 0000000..bc84c4b
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss-relative</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-relative-wildfly</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Relative Wildfly</name>
+    
+    <properties>
+        <auth.server.jboss>wildfly</auth.server.jboss>
+        <app.server.jboss.artifactId>integration-arquillian-servers-auth-server-wildfly</app.server.jboss.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/relative/wildfly/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/pom.xml
new file mode 100644
index 0000000..445a6de
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-wildfly</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Wildfly</name>
+    
+    <properties>
+        <app.server.jboss>wildfly</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.wildfly</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>wildfly-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${wildfly.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>wildfly-${wildfly.version}</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-wildfly-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-wildfly-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/pom.xml
new file mode 100644
index 0000000..c6e81d0
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-wildfly8</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Wildfly 8</name>
+    
+    <properties>
+        <app.server.jboss>wildfly8</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.wildfly</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>wildfly-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${wildfly8.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>wildfly-${wildfly8.version}</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-wf8-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-wildfly-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/src/saml-adapter-not-supported b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/src/saml-adapter-not-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly8/src/saml-adapter-not-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/pom.xml b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/pom.xml
new file mode 100644
index 0000000..e689337
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-wildfly9</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - JBoss - Wildfly 9</name>
+    
+    <properties>
+        <app.server.jboss>wildfly9</app.server.jboss>
+        
+        <app.server.jboss.groupId>org.wildfly</app.server.jboss.groupId>
+        <app.server.jboss.artifactId>wildfly-dist</app.server.jboss.artifactId>
+        <app.server.jboss.version>${wildfly9.version}</app.server.jboss.version>
+        <app.server.jboss.unpacked.folder.name>wildfly-${wildfly9.version}</app.server.jboss.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-wildfly-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-wildfly-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/jboss/wildfly9/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.bat b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.bat
new file mode 100644
index 0000000..7abbf5a
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.bat
@@ -0,0 +1,38 @@
+set NOPAUSE=true
+echo "JAVA_HOME=%JAVA_HOME%"
+
+start "Karaf" /b cmd /c start.bat
+echo "Karaf container starting"
+ping 127.0.0.1 -n 5 > nul
+
+set ERROR=0
+set TIMEOUT=10
+set I=0
+
+:wait_for_karaf
+call client.bat %CLIENT_AUTH% info
+if %ERRORLEVEL% equ 0 goto install_features
+echo "Server is not reachable. Waiting."
+ping 127.0.0.1 -n 2 > nul
+set /a I=%I%+1
+if %I% gtr %TIMEOUT% (
+    set ERROR=1
+    goto shutdown_karaf
+)
+goto wait_for_karaf
+
+
+:install_features
+echo "Server is reachable. Installing features."
+if "%UNINSTALL_PAX%" == "true" (
+    call client.bat %CLIENT_AUTH% -f uninstall-pax.cli
+    if %ERRORLEVEL% neq 0 set ERROR=%ERRORLEVEL%
+)
+call client.bat %CLIENT_AUTH% -f install-features.cli
+if %ERRORLEVEL% neq 0 set ERROR=%ERRORLEVEL%
+
+
+:shutdown_karaf
+call stop.bat
+ping 127.0.0.1 -n 5 > nul
+exit /b %ERROR%
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh
new file mode 100755
index 0000000..4173908
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/common/install-features.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+echo "JAVA_HOME=$JAVA_HOME"
+
+./start
+echo "Karaf container starting"
+sleep 5
+
+TIMEOUT=10
+DELAY=1
+T=0
+
+RESULT=0
+
+until [ $T -gt $TIMEOUT ]
+do
+    if ./client $CLIENT_AUTH info; then
+        echo "Server is reachable."
+
+        if "$UNINSTALL_PAX" == "true"; then
+            echo "Uninstalling PAX"
+            ./client $CLIENT_AUTH -f uninstall-pax.cli
+            if [ $? -ne 0 ]; then RESULT=1; fi
+        fi
+
+        echo "Installing features."
+        ./client $CLIENT_AUTH -f install-features.cli
+        if [ $? -ne 0 ]; then RESULT=1; fi
+
+        ./stop
+        rm -rf ../data/log
+        rm -rf ../data/tmp
+
+        sleep 5
+
+        exit $RESULT
+    else
+        echo "Server is not reachable. Waiting."
+        sleep $DELAY
+        let T=$T+$DELAY
+    fi
+done
+
+./stop
+exit 1
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/pom.xml b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/pom.xml
new file mode 100644
index 0000000..3646c55
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/pom.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-fuse61</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Karaf - JBoss Fuse 6.1</name>
+
+    <properties>
+        <app.server.karaf>fuse61</app.server.karaf>
+        <app.server.karaf.groupId>org.jboss.fuse</app.server.karaf.groupId>
+        <app.server.karaf.artifactId>jboss-fuse-full</app.server.karaf.artifactId>
+        <app.server.karaf.version>${fuse61.version}</app.server.karaf.version>
+        <app.server.karaf.unpacked.folder.name>jboss-fuse-${fuse61.version}</app.server.karaf.unpacked.folder.name>
+        <app.server.karaf.client.auth>-u admin -p admin</app.server.karaf.client.auth>
+        <app.server.karaf.uninstall.pax>true</app.server.karaf.uninstall.pax>
+    </properties>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>fuse61.version</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>    
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/install-features.cli b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/install-features.cli
new file mode 100644
index 0000000..9ac9d77
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/install-features.cli
@@ -0,0 +1,6 @@
+features:addurl mvn:org.ops4j.pax.web/pax-web-features/3.1.2/xml/features
+features:addurl mvn:org.keycloak/keycloak-osgi-features/${project.version}/xml/features
+features:addurl mvn:org.keycloak.example.demo/keycloak-fuse-example-features/${project.version}/xml/features
+features:install keycloak-pax-web-upgrade
+features:install pax-http-whiteboard/3.1.2
+features:install pax-war/3.1.2
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/uninstall-pax.cli b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/uninstall-pax.cli
new file mode 100644
index 0000000..a1106a7
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/uninstall-pax.cli
@@ -0,0 +1,5 @@
+features:uninstall pax-war
+features:uninstall pax-http-whiteboard 
+features:uninstall pax-http
+features:uninstall pax-jetty
+features:removeurl mvn:org.ops4j.pax.web/pax-web-features/3.0.6/xml/features
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/users.properties b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/users.properties
new file mode 100644
index 0000000..e6ba672
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/main/resources/users.properties
@@ -0,0 +1 @@
+admin=admin,admin
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/saml-adapter-not-supported b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/saml-adapter-not-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse61/src/saml-adapter-not-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/pom.xml b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/pom.xml
new file mode 100644
index 0000000..a40537f
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-fuse62</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Karaf - JBoss Fuse 6.2</name>
+
+    <properties>
+        <app.server.karaf>fuse62</app.server.karaf>
+        <app.server.karaf.groupId>org.jboss.fuse</app.server.karaf.groupId>
+        <app.server.karaf.artifactId>jboss-fuse-full</app.server.karaf.artifactId>
+        <app.server.karaf.version>${fuse62.version}</app.server.karaf.version>
+        <app.server.karaf.unpacked.folder.name>jboss-fuse-${fuse62.version}</app.server.karaf.unpacked.folder.name>
+        <app.server.karaf.client.auth>-u admin -p admin</app.server.karaf.client.auth>
+    </properties>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>fuse62.version</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>    
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/install-features.cli b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/install-features.cli
new file mode 100644
index 0000000..9ac71e3
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/install-features.cli
@@ -0,0 +1,3 @@
+features:addurl mvn:org.keycloak/keycloak-osgi-features/${project.version}/xml/features
+features:addurl mvn:org.keycloak.example.demo/keycloak-fuse-example-features/${project.version}/xml/features
+features:install keycloak-fuse-example
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/users.properties b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/users.properties
new file mode 100644
index 0000000..6c51920
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/main/resources/users.properties
@@ -0,0 +1 @@
+admin=admin,admin,manager,viewer,Monitor, Operator, Maintainer, Deployer, Auditor, Administrator, SuperUser
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/saml-adapter-not-supported b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/saml-adapter-not-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/fuse62/src/saml-adapter-not-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/pom.xml b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/pom.xml
new file mode 100644
index 0000000..67a7f9c
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-karaf3</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Karaf - Karaf 3</name>
+
+    <properties>
+        <app.server.karaf>karaf3</app.server.karaf>
+        <app.server.karaf.groupId>org.apache.karaf</app.server.karaf.groupId>
+        <app.server.karaf.artifactId>apache-karaf-minimal</app.server.karaf.artifactId>
+        <app.server.karaf.version>${karaf3.version}</app.server.karaf.version>
+        <app.server.karaf.unpacked.folder.name>apache-karaf-minimal-${karaf3.version}</app.server.karaf.unpacked.folder.name>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/install-features.cli b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/install-features.cli
new file mode 100644
index 0000000..1e011ea
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/install-features.cli
@@ -0,0 +1,5 @@
+feature:repo-add mvn:org.apache.camel.karaf/apache-camel/2.15.1/xml/features
+feature:repo-add mvn:org.apache.cxf.karaf/apache-cxf/3.0.4/xml/features
+feature:repo-add mvn:org.keycloak/keycloak-osgi-features/${project.version}/xml/features
+feature:repo-add mvn:org.keycloak.example.demo/keycloak-fuse-example-features/${project.version}/xml/features
+feature:install keycloak-fuse-example
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/users.properties b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/users.properties
new file mode 100644
index 0000000..61ad339
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/main/resources/users.properties
@@ -0,0 +1,2 @@
+karaf = karaf,_g_:admingroup
+_g_\:admingroup = group,admin,manager,viewer,webconsole
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/saml-adapter-not-supported b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/saml-adapter-not-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/karaf3/src/saml-adapter-not-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/karaf/pom.xml b/testsuite/integration-arquillian/servers/app-server/karaf/pom.xml
new file mode 100644
index 0000000..dbe40e3
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/karaf/pom.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-karaf</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Karaf</name>
+    
+    <properties>
+        <common.resources>${project.parent.basedir}/common</common.resources>
+        <assembly.xml>${project.parent.basedir}/assembly.xml</assembly.xml>
+        <app.server.karaf.home>${containers.home}/${app.server.karaf.unpacked.folder.name}</app.server.karaf.home>
+        <app.server.karaf.client.auth>-u karaf</app.server.karaf.client.auth>
+        <app.server.karaf.uninstall.pax>false</app.server.karaf.uninstall.pax>
+    </properties>
+
+    <profiles>
+        
+        <profile>
+            <id>app-server-karaf-submodules</id>
+            <activation>
+                <file>
+                    <exists>src</exists>
+                </file>
+            </activation>    
+            <build>
+                <plugins>
+                    
+                    <plugin>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireProperty>
+                                            <property>app.server.karaf</property>
+                                            <property>app.server.karaf.groupId</property>
+                                            <property>app.server.karaf.artifactId</property>
+                                            <property>app.server.karaf.version</property>
+                                            <property>app.server.karaf.unpacked.folder.name</property>
+                                        </requireProperty>
+                                        <requireOS>
+                                            <family>!windows</family>
+                                            <message>Automated Kara/Fuse adapter configuration currently doesn't work on Windows.</message>
+                                        </requireOS>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-karaf</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${app.server.karaf.groupId}</groupId>
+                                            <artifactId>${app.server.karaf.artifactId}</artifactId>
+                                            <version>${app.server.karaf.version}</version>
+                                            <type>zip</type>
+                                            <outputDirectory>${containers.home}</outputDirectory>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <overWriteIfNewer>true</overWriteIfNewer>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy-features-clie</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${app.server.karaf.home}/bin</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>src/main/resources</directory>
+                                            <includes>
+                                                <include>install-features.cli</include>
+                                            </includes>
+                                            <filtering>true</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>copy-users-properties</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <outputDirectory>${app.server.karaf.home}/etc</outputDirectory>
+                                    <overwrite>true</overwrite>
+                                    <resources>
+                                        <resource>
+                                            <directory>src/main/resources</directory>
+                                            <includes>
+                                                <include>users.properties</include>
+                                            </includes>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>install-features</id>
+                                <phase>process-test-resources</phase>
+                                <goals>
+                                    <goal>exec</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <executable>${common.resources}/install-features.${script.suffix}</executable>
+                            <workingDirectory>${app.server.karaf.home}/bin</workingDirectory>
+                            <environmentVariables>
+                                <JAVA_HOME>${app.server.java.home}</JAVA_HOME>
+                                <CLIENT_AUTH>${app.server.karaf.client.auth}</CLIENT_AUTH>
+                                <UNINSTALL_PAX>${app.server.karaf.uninstall.pax}</UNINSTALL_PAX>
+                            </environmentVariables>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>create-zip</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>${assembly.xml}</descriptor>
+                                    </descriptors>
+                                    <appendAssemblyId>false</appendAssemblyId>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>app-server-karaf3</id>
+            <modules>
+                <module>karaf3</module>
+            </modules>
+        </profile>        
+        <profile>
+            <id>app-server-fuse61</id>
+            <modules>
+                <module>fuse61</module>
+            </modules>
+        </profile>        
+        <profile>
+            <id>app-server-fuse62</id>
+            <modules>
+                <module>fuse62</module>
+            </modules>
+        </profile>        
+        
+    </profiles>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/pom.xml b/testsuite/integration-arquillian/servers/app-server/pom.xml
new file mode 100644
index 0000000..5aebbe1
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/pom.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server</name>
+
+    <properties>
+        <app.server.saml.adapter.supported>false</app.server.saml.adapter.supported>
+    </properties>
+
+    <modules>
+        <module>jboss</module>
+        <module>karaf</module>
+        <module>tomcat</module>
+    </modules>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/README.md b/testsuite/integration-arquillian/servers/app-server/README.md
new file mode 100644
index 0000000..6905f03
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/README.md
@@ -0,0 +1,49 @@
+# Keycloak Arquillian Integration TestSuite - Test Servers
+
+[Up...](../README.md)
+
+## App Server - JBoss
+
+JBoss-based container with installed and configured Keycloak adapter.
+
+Submodules are enabled with profiles: `-Papp-server-MODULE`
+
+### Modules
+
+* __`as7` JBossAS 7__
+* __`wildfly8` Wildfly 8__
+* __`wildfly9` Wildfly 9__
+* __`wildfly` Wildfly 10__
+* __`eap6` EAP 6__ Requires access to EAP product repo, or setting `-Deap6.version` to public EAP 6 Alpha.
+* __`eap` EAP 7__ Requires access to EAP product repo.
+* __`relative`__ Activate with `-Papp-server-relative`.
+ * __`wildfly` Relative Wildfly 10__ Based on [`auth-server/jboss/wildfly`](../auth-server/README.md). Activate with `-Pauth-server-wildfly`.
+ * __`eap` Relative EAP 7__ Based on [`auth-server/jboss/eap`](../auth-server/README.md). Activate with `-Pauth-server-eap`.
+
+### Adapter Libs Location
+
+* __Provided__ (in container) - Default.
+* __Bundled__ (in war) `-Dadapter.libs.bundled=true`
+
+### Adapter Configs Location
+
+* __Provided__ (in standalone.xml as secure-deployment) _Not implemented_
+* __Bundled__ (in war) - Default.
+
+### SSL
+
+Configures SSL in `standalone.xml`. See profile `ssl`.
+
+
+## App Server - Karaf
+Submodules are enabled with profiles: `-Papp-server-MODULE`
+### Modules
+* __`karaf3` Karaf 3__
+* __`fuse61` JBoss Fuse 6.1__
+* __`fuse62` JBoss Fuse 6.2__
+
+## App Server - Tomcat
+Submodules are enabled with profiles: `-Papp-server-MODULE`
+### Modules
+* __`tomcat7` Tomcat 7__
+* __`tomcat8` Tomcat 8__
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/assembly.xml b/testsuite/integration-arquillian/servers/app-server/tomcat/assembly.xml
new file mode 100644
index 0000000..396cda3
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/assembly.xml
@@ -0,0 +1,46 @@
+<!--
+  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+  ~ and other contributors as indicated by the @author tags.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<assembly>
+    
+    <id>${app.server.tomcat}</id>
+    
+    <formats>
+        <format>zip</format>
+    </formats>
+
+    <includeBaseDirectory>false</includeBaseDirectory>
+
+    <fileSets>
+        <fileSet>
+            <directory>${app.server.tomcat.home}</directory>
+            <outputDirectory>app-server-${app.server.tomcat}</outputDirectory>
+            <excludes>
+                <exclude>**/*.sh</exclude>
+            </excludes>
+        </fileSet>
+        <fileSet>
+            <directory>${app.server.tomcat.home}</directory>
+            <outputDirectory>app-server-${app.server.tomcat}</outputDirectory>
+            <includes>
+                <include>**/*.sh</include>
+            </includes>
+            <fileMode>0755</fileMode>
+        </fileSet>
+    </fileSets>
+
+</assembly>
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/pom.xml b/testsuite/integration-arquillian/servers/app-server/tomcat/pom.xml
new file mode 100644
index 0000000..ddec315
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/pom.xml
@@ -0,0 +1,302 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-tomcat</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Tomcat</name>
+
+    <properties>
+        <common.resources>${project.parent.basedir}/common</common.resources>
+        <assembly.xml>${project.parent.basedir}/assembly.xml</assembly.xml>
+        <app.server.tomcat.home>${containers.home}/${app.server.tomcat.unpacked.folder.name}</app.server.tomcat.home>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>app-server-tomcat-submodules</id>
+            <activation>
+                <file>
+                    <exists>src</exists>
+                </file>
+            </activation>    
+            <build>
+                <plugins>
+                    
+                    <plugin>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireProperty>
+                                            <property>app.server.tomcat</property>
+                                            <property>app.server.tomcat.groupId</property>
+                                            <property>app.server.tomcat.artifactId</property>
+                                            <property>app.server.tomcat.version</property>
+                                            <property>app.server.tomcat.unpacked.folder.name</property>
+                                            <property>app.server.oidc.adapter.artifactId</property>
+                                        </requireProperty>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                    
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-tomcat-and-adapter</id>
+                                <phase>generate-test-resources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>${app.server.tomcat.groupId}</groupId>
+                                            <artifactId>${app.server.tomcat.artifactId}</artifactId>
+                                            <version>${app.server.tomcat.version}</version>
+                                            <type>zip</type>
+                                            <outputDirectory>${containers.home}</outputDirectory>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.keycloak</groupId>
+                                            <artifactId>${app.server.oidc.adapter.artifactId}</artifactId>
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                            <outputDirectory>${app.server.tomcat.home}/lib</outputDirectory>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <overWriteIfNewer>true</overWriteIfNewer>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>libs-for-tomcat</id>
+                                <phase>generate-test-resources</phase>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.jboss.resteasy</groupId>
+                                            <artifactId>resteasy-client</artifactId>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.jboss.spec.javax.ws.rs</groupId>
+                                            <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
+                                        </artifactItem>                                        
+                                        <artifactItem>
+                                            <groupId>org.jboss.resteasy</groupId>
+                                            <artifactId>resteasy-jaxrs</artifactId>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>commons-io</groupId>
+                                            <artifactId>commons-io</artifactId>
+                                            <version>1.4</version>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <outputDirectory>${app.server.tomcat.home}/lib</outputDirectory>
+                                    <overWriteIfNewer>true</overWriteIfNewer>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>xml-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>add-tomcat-manager-user</id>
+                                <phase>process-test-resources</phase>
+                                <goals>
+                                    <goal>transform</goal>
+                                </goals>
+                                <configuration>
+                                    <transformationSets>
+                                        <transformationSet>
+                                            <dir>${app.server.tomcat.home}/conf</dir>
+                                            <stylesheet>${common.resources}/tomcat-users.xsl</stylesheet>
+                                            <includes>
+                                                <include>tomcat-users.xml</include>
+                                            </includes>
+                                            <outputDir>${app.server.tomcat.home}/conf</outputDir>
+                                        </transformationSet>
+                                    </transformationSets>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>parametrize-server-ports</id>
+                                <phase>process-test-resources</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <tasks>
+                                        <replace file="${app.server.tomcat.home}/conf/server.xml">
+                                            <replacetoken>8005</replacetoken>
+                                            <replacevalue>${tomcat.server.port}</replacevalue>
+                                        </replace>
+                                        <replace file="${app.server.tomcat.home}/conf/server.xml">
+                                            <replacetoken>8080</replacetoken>
+                                            <replacevalue>${tomcat.http.port}</replacevalue>
+                                        </replace>
+                                        <replace file="${app.server.tomcat.home}/conf/server.xml">
+                                            <replacetoken>8443</replacetoken>
+                                            <replacevalue>${tomcat.server.port}</replacevalue>
+                                        </replace>
+                                        <replace file="${app.server.tomcat.home}/conf/server.xml">
+                                            <replacetoken>8009</replacetoken>
+                                            <replacevalue>${tomcat.ajp.port}</replacevalue>
+                                        </replace>
+                                        
+                                        <propertyfile
+                                            file="${app.server.tomcat.home}/conf/catalina.properties"
+                                            comment="Parametrized Tomcat Ports in server.xml">
+                                            <entry  key="tomcat.server.port" value="8005"/>
+                                            <entry  key="tomcat.http.port" value="8080"/>
+                                            <entry  key="tomcat.https.port" value="8443"/>
+                                            <entry  key="tomcat.ajp.port" value="8009"/>
+                                        </propertyfile>
+                                        
+                                    </tasks>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    
+                    <plugin>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>create-zip</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>${assembly.xml}</descriptor>
+                                    </descriptors>
+                                    <appendAssemblyId>false</appendAssemblyId>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>                    
+                </plugins>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>app-server-saml-supported</id>
+            <activation>
+                <file>
+                    <exists>src/saml-adapter-supported</exists>
+                </file>
+            </activation>
+            <properties>
+                <app.server.saml.adapter.supported>true</app.server.saml.adapter.supported>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireProperty>
+                                            <property>app.server.saml.adapter.artifactId</property>
+                                        </requireProperty>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-saml-adapter</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.keycloak</groupId>
+                                            <artifactId>${app.server.saml.adapter.artifactId}</artifactId>
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                            <outputDirectory>${app.server.tomcat.home}/lib</outputDirectory>
+                                        </artifactItem>
+                                    </artifactItems>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>app-server-tomcat7</id>
+            <modules>
+                <module>tomcat7</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-tomcat8</id>
+            <modules>
+                <module>tomcat8</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-tomcat9</id>
+            <modules>
+                <module>tomcat9</module>
+            </modules>
+        </profile>
+        
+    </profiles>
+
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/pom.xml b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/pom.xml
new file mode 100644
index 0000000..545c2bf
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-tomcat7</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Tomcat - Tomcat 7</name>
+
+    <properties>
+        <app.server.tomcat>tomcat7</app.server.tomcat>
+        
+        <app.server.tomcat.groupId>org.apache.tomcat</app.server.tomcat.groupId>
+        <app.server.tomcat.artifactId>tomcat</app.server.tomcat.artifactId>
+        <app.server.tomcat.version>${tomcat7.version}</app.server.tomcat.version>
+        <app.server.tomcat.unpacked.folder.name>apache-tomcat-${tomcat7.version}</app.server.tomcat.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-tomcat7-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-tomcat7-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat7/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/pom.xml b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/pom.xml
new file mode 100644
index 0000000..8683044
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-tomcat8</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Tomcat - Tomcat 8</name>
+
+    <properties>
+        <app.server.tomcat>tomcat8</app.server.tomcat>
+        
+        <app.server.tomcat.groupId>org.apache.tomcat</app.server.tomcat.groupId>
+        <app.server.tomcat.artifactId>tomcat</app.server.tomcat.artifactId>
+        <app.server.tomcat.version>${tomcat8.version}</app.server.tomcat.version>
+        <app.server.tomcat.unpacked.folder.name>apache-tomcat-${tomcat8.version}</app.server.tomcat.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-tomcat8-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-tomcat8-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat8/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/pom.xml b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/pom.xml
new file mode 100644
index 0000000..b6cb75b
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-app-server-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-app-server-tomcat9</artifactId>
+    <packaging>pom</packaging>
+    <name>App Server - Tomcat - Tomcat 9</name>
+
+    <properties>
+        <app.server.tomcat>tomcat9</app.server.tomcat>
+        
+        <app.server.tomcat.groupId>org.apache.tomcat</app.server.tomcat.groupId>
+        <app.server.tomcat.artifactId>tomcat</app.server.tomcat.artifactId>
+        <app.server.tomcat.version>${tomcat9.version}</app.server.tomcat.version>
+        <app.server.tomcat.unpacked.folder.name>apache-tomcat-${tomcat9.version}</app.server.tomcat.unpacked.folder.name>
+        
+        <app.server.oidc.adapter.artifactId>keycloak-tomcat8-adapter-dist</app.server.oidc.adapter.artifactId>
+        <app.server.saml.adapter.artifactId>keycloak-saml-tomcat8-adapter-dist</app.server.saml.adapter.artifactId>
+    </properties>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/src/saml-adapter-supported b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/src/saml-adapter-supported
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/app-server/tomcat/tomcat9/src/saml-adapter-supported
@@ -0,0 +1 @@
+
diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/assembly.xml b/testsuite/integration-arquillian/servers/auth-server/jboss/assembly.xml
new file mode 100644
index 0000000..47b8215
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/jboss/assembly.xml
@@ -0,0 +1,46 @@
+<!--
+  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+  ~ and other contributors as indicated by the @author tags.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~ http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<assembly>
+    
+    <id>${auth.server.jboss}</id>
+
+    <formats>
+        <format>zip</format>
+    </formats>
+
+    <includeBaseDirectory>false</includeBaseDirectory>
+
+    <fileSets>
+        <fileSet>
+            <directory>${auth.server.home}</directory>
+            <outputDirectory>auth-server-${auth.server.jboss}</outputDirectory>
+            <excludes>
+                <exclude>**/*.sh</exclude>
+            </excludes>
+        </fileSet>
+        <fileSet>
+            <directory>${auth.server.home}</directory>
+            <outputDirectory>auth-server-${auth.server.jboss}</outputDirectory>
+            <includes>
+                <include>**/*.sh</include>
+            </includes>
+            <fileMode>0755</fileMode>
+        </fileSet>
+    </fileSets>
+
+</assembly>
diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/eap/pom.xml b/testsuite/integration-arquillian/servers/auth-server/jboss/eap/pom.xml
new file mode 100644
index 0000000..c52b834
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/jboss/eap/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-auth-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>pom</packaging>
+    
+    <artifactId>integration-arquillian-servers-auth-server-eap</artifactId>
+    
+    <name>Auth Server - JBoss - EAP</name>
+    
+    <properties>
+        <auth.server.jboss>eap</auth.server.jboss>
+
+        <!--server-dist-->
+        <auth.server.dist.version>${product.version}</auth.server.dist.version>
+        <auth.server.dist.unpacked.folder.name>${product.unpacked.folder.name}</auth.server.dist.unpacked.folder.name>
+
+        <!--server-overlay-->
+        <auth.server.overlay.version>${product.version}</auth.server.overlay.version>
+        <overlaid.container.groupId>org.jboss.eap</overlaid.container.groupId>
+        <overlaid.container.version>${eap.version}</overlaid.container.version>
+        <overlaid.container.unpacked.folder.name>jboss-eap-7.0</overlaid.container.unpacked.folder.name>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-auth-server-jboss-profile</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>product.version</property>
+                                </requireProperty>
+                                <requireProperty>
+                                    <property>product.unpacked.folder.name</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+            
+</project>
diff --git a/testsuite/integration-arquillian/servers/auth-server/jboss/wildfly/pom.xml b/testsuite/integration-arquillian/servers/auth-server/jboss/wildfly/pom.xml
new file mode 100644
index 0000000..d27dd3a
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/jboss/wildfly/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-auth-server-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <packaging>pom</packaging>
+    
+    <artifactId>integration-arquillian-servers-auth-server-wildfly</artifactId>
+    
+    <name>Auth Server - JBoss - Wildfly</name>
+    
+    <properties>
+        <auth.server.jboss>wildfly</auth.server.jboss>
+    </properties>
+    
+</project>
diff --git a/testsuite/integration-arquillian/servers/auth-server/pom.xml b/testsuite/integration-arquillian/servers/auth-server/pom.xml
new file mode 100644
index 0000000..d9f8222
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-auth-server</artifactId>
+    <packaging>pom</packaging>
+    <name>Auth Server</name>
+
+    <modules>
+        <module>jboss</module>
+        <module>undertow</module>
+    </modules>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/auth-server/README.md b/testsuite/integration-arquillian/servers/auth-server/README.md
new file mode 100644
index 0000000..87f9a20
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/README.md
@@ -0,0 +1,44 @@
+# Keycloak Arquillian Integration TestSuite - Test Servers
+
+[Up...](../README.md)
+
+## Auth Server - JBoss `auth-server/jboss`
+
+### Modules
+
+* __`wildfly` Wildfly 10__
+ - Builds keycloak server on top of latest Wildfly.
+ - Activated by __`-Pauth-server-wildfly`__
+
+* __`eap` EAP 7__
+ - Builds keycloak server on top of latest EAP.
+ - Activated by __`-Pauth-server-eap`__
+ - Requires access to product repo.
+ - Requires additional properties:
+  - `product.version`
+  - `product.unpacked.folder.name`
+
+### Server dist vs overlay
+
+By default `keycloak-server-dist` artifact is used for the build.
+By setting `-Dserver-overlay=true` you can switch to server overlay instead. See profile `server-overlay`.
+
+### JPA
+
+Configures Keycloak JDBC datasource in `standalone.xml`. See profile `jpa`.
+
+### SSL
+
+Configures SSL in `standalone.xml`. See profile `ssl`.
+
+### Cluster
+
+Configures in `standalone-ha.xml`:
+- h2 datasource over TCP
+- parameters of Keycloak Infinispan caches
+
+See profile `auth-server-cluster`.
+
+## Auth Server - Undertow `auth-server/undertow`
+
+Arquillian extension for running Keycloak server in embedded Undertow.
diff --git a/testsuite/integration-arquillian/servers/auth-server/undertow/pom.xml b/testsuite/integration-arquillian/servers/auth-server/undertow/pom.xml
new file mode 100644
index 0000000..9ccb841
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/undertow/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-servers-auth-server</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>integration-arquillian-servers-auth-server-undertow</artifactId>
+    <name>Auth Server - Undertow</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.arquillian.junit</groupId>
+            <artifactId>arquillian-junit-container</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.arquillian.container</groupId>
+            <artifactId>undertow-embedded</artifactId>
+            <version>1.0.0.Alpha1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-jaxrs</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-simple</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.resteasy</groupId>
+            <artifactId>resteasy-undertow</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.keycloak</groupId>
+            <artifactId>keycloak-dependencies-server-all</artifactId>
+            <type>pom</type>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension b/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
new file mode 100644
index 0000000..27b8ee1
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension
@@ -0,0 +1 @@
+org.keycloak.testsuite.arquillian.undertow.KeycloakOnUndertowArquillianExtension
diff --git a/testsuite/integration-arquillian/servers/migration/pom.xml b/testsuite/integration-arquillian/servers/migration/pom.xml
index 49aeff4..c161b4b 100644
--- a/testsuite/integration-arquillian/servers/migration/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc12/assembly.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc12/assembly.xml
index d3fc3db..cc99697 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc12/assembly.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc12/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>auth-server-wildfly-kc14</id>
+    <id>auth-server-jboss-kc14</id>
 
     <formats>
         <format>zip</format>
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc12/pom.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc12/pom.xml
index 1d080cf..286d349 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc12/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc12/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-migration-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc13/assembly.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc13/assembly.xml
index 0ee1a4d..cd48ba2 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc13/assembly.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc13/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>auth-server-wildfly-kc14</id>
+    <id>auth-server-jboss-kc14</id>
 
     <formats>
         <format>zip</format>
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc13/pom.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc13/pom.xml
index ee806c4..6f5da90 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc13/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc13/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-migration-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc14/assembly.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc14/assembly.xml
index 5cff675..deac59d 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc14/assembly.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc14/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>auth-server-wildfly-kc14</id>
+    <id>auth-server-jboss-kc14</id>
 
     <formats>
         <format>zip</format>
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc14/pom.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc14/pom.xml
index 5ce1f6b..b5c522c 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc14/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc14/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-migration-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc15/assembly.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc15/assembly.xml
index d451b81..b7330e3 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc15/assembly.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc15/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>auth-server-wildfly-kc15</id>
+    <id>auth-server-jboss-kc15</id>
 
     <formats>
         <format>zip</format>
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc15/pom.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc15/pom.xml
index 5f3eb9e..621cd05 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc15/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc15/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-migration-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc16/assembly.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc16/assembly.xml
index c439290..2e08956 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc16/assembly.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc16/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>auth-server-wildfly-kc16</id>
+    <id>auth-server-jboss-kc16</id>
 
     <formats>
         <format>zip</format>
diff --git a/testsuite/integration-arquillian/servers/migration/wildfly_kc16/pom.xml b/testsuite/integration-arquillian/servers/migration/wildfly_kc16/pom.xml
index cc057c9..c9df7ab 100644
--- a/testsuite/integration-arquillian/servers/migration/wildfly_kc16/pom.xml
+++ b/testsuite/integration-arquillian/servers/migration/wildfly_kc16/pom.xml
@@ -21,7 +21,7 @@
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-migration-servers</artifactId>
-        <version>1.9.0.CR1-SNAPSHOT</version>
+        <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/testsuite/integration-arquillian/servers/pom.xml b/testsuite/integration-arquillian/servers/pom.xml
index 54a3e8b..2436b31 100644
--- a/testsuite/integration-arquillian/servers/pom.xml
+++ b/testsuite/integration-arquillian/servers/pom.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0"?>
 <!--
-  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
-  ~ and other contributors as indicated by the @author tags.
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
 
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -29,38 +29,51 @@
     <packaging>pom</packaging>
     <name>Servers</name>
 
-    <!--<modules>-->
-        <!--<module>migration</module>-->
-    <!--</modules>-->
-    
+    <properties>
+        <script.suffix>sh</script.suffix>
+        
+        <!--app container versions-->        
+        <wildfly9.version>9.0.2.Final</wildfly9.version>
+        <wildfly8.version>8.2.1.Final</wildfly8.version>
+        <eap.version>7.0.0.ER6-redhat-1</eap.version>
+        <eap6.version>7.5.6.Final-redhat-2</eap6.version>
+        <jboss.as.version>7.1.1.Final</jboss.as.version>
+        <eap6.version>7.5.6.Final-redhat-2</eap6.version>
+        <tomcat7.version>7.0.68</tomcat7.version>
+        <tomcat8.version>8.0.32</tomcat8.version>
+        <tomcat9.version>9.0.0.M3</tomcat9.version>
+        <karaf3.version>3.0.3</karaf3.version>
+        <fuse61.version>6.1.0.redhat-379</fuse61.version>
+        <!--<fuse62.version>6.2.0.redhat-133</fuse62.version>-->
+        <fuse62.version>6.2.1.redhat-084</fuse62.version>
+        
+    </properties>
+
+    <modules>
+        <module>auth-server</module>
+        <module>app-server</module>
+    </modules>
+
     <profiles>
         <profile>
-            <id>auth-server-wildfly</id>
-            <modules>
-                <module>wildfly</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>auth-server-wildfly-cluster</id>
+            <id>auth-server-cluster</id>
             <modules>
-                <module>wildfly</module>
                 <module>wildfly-balancer</module>
             </modules>
         </profile>
         
         <profile>
-            <id>auth-server-eap7</id>
-            <modules>
-                <module>eap7</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>auth-server-eap7-cluster</id>
-            <modules>
-                <module>eap7</module>
-                <module>wildfly-balancer</module>
-            </modules>
+            <id>win</id>
+            <activation>
+                <os>
+                    <family>Windows</family>
+                </os>
+            </activation>
+            <properties>        
+                <script.suffix>bat</script.suffix>
+            </properties>
         </profile>
-    </profiles>    
 
+    </profiles>
+    
 </project>
diff --git a/testsuite/integration-arquillian/servers/README.md b/testsuite/integration-arquillian/servers/README.md
new file mode 100644
index 0000000..835e171
--- /dev/null
+++ b/testsuite/integration-arquillian/servers/README.md
@@ -0,0 +1,38 @@
+# Keycloak Arquillian Integration TestSuite
+
+[Keycloak Arquillian Integration TestSuite](../README.md)
+
+## Test Servers
+
+A set of modules that build test-server artifacts preconfigured for various test scenarios.
+The artifacts are used by the Arquillian TestSuite.
+
+### Auth Server
+
+- JBoss
+ - Wildfly 10
+ - EAP 7
+- Undertow
+
+[Details...](auth-server/README.md)
+
+
+### App Server
+
+- JBoss
+ - JBossAS 7
+ - Wildfly 8, 9, 10
+ - EAP 6, 7
+ - Relative (Wildfly 10 / EAP 7)
+- Karaf / Fuse
+ - Karaf 3
+ - Fuse 6.1, 6.2
+- Tomcat
+ - Tomcat 7, 8
+
+[Details...](app-server/README.md)
+
+### Load Balancer
+
+- Wildfly + mod_cluster
+
diff --git a/testsuite/integration-arquillian/servers/wildfly-balancer/assembly.xml b/testsuite/integration-arquillian/servers/wildfly-balancer/assembly.xml
index a3e36ae..50238d4 100644
--- a/testsuite/integration-arquillian/servers/wildfly-balancer/assembly.xml
+++ b/testsuite/integration-arquillian/servers/wildfly-balancer/assembly.xml
@@ -17,7 +17,7 @@
 
 <assembly>
     
-    <id>wildfly-balancer</id>
+    <id>balancer-wildfly</id>
 
     <formats>
         <format>zip</format>
@@ -28,14 +28,14 @@
     <fileSets>
         <fileSet>
             <directory>${wildfly.balancer.home}</directory>
-            <outputDirectory>wildfly-balancer-${project.version}</outputDirectory>
+            <outputDirectory>balancer-wildfly</outputDirectory>
             <excludes>
                 <exclude>**/*.sh</exclude>
             </excludes>
         </fileSet>
         <fileSet>
             <directory>${wildfly.balancer.home}</directory>
-            <outputDirectory>wildfly-balancer-${project.version}</outputDirectory>
+            <outputDirectory>balancer-wildfly</outputDirectory>
             <includes>
                 <include>**/*.sh</include>
             </includes>
diff --git a/testsuite/integration-arquillian/servers/wildfly-balancer/pom.xml b/testsuite/integration-arquillian/servers/wildfly-balancer/pom.xml
index 347ef5f..91db211 100644
--- a/testsuite/integration-arquillian/servers/wildfly-balancer/pom.xml
+++ b/testsuite/integration-arquillian/servers/wildfly-balancer/pom.xml
@@ -36,7 +36,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-deploy-plugin</artifactId>
                 <configuration>
                     <skip>true</skip>
@@ -44,7 +43,6 @@
             </plugin>            
             
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <executions>
                     <execution>
diff --git a/testsuite/integration-arquillian/servers/wildfly-balancer/src/main/xslt/mod_cluster.xsl b/testsuite/integration-arquillian/servers/wildfly-balancer/src/main/xslt/mod_cluster.xsl
index 9cb3774..2079fc9 100644
--- a/testsuite/integration-arquillian/servers/wildfly-balancer/src/main/xslt/mod_cluster.xsl
+++ b/testsuite/integration-arquillian/servers/wildfly-balancer/src/main/xslt/mod_cluster.xsl
@@ -60,7 +60,7 @@
     <xsl:template match="//s:socket-binding-group[@name='standard-sockets']">
         <xsl:copy>
             <xsl:apply-templates select="node()|@*"/>
-            <socket-binding name="modcluster" port="23364" multicast-address="224.0.1.105"/>
+            <socket-binding name="modcluster" port="${{modcluster.port:23364}}" multicast-address="${{modcluster.multicast-address:224.0.1.105}}"/>
         </xsl:copy>
     </xsl:template>
 
diff --git a/testsuite/integration-arquillian/tests/base/pom.xml b/testsuite/integration-arquillian/tests/base/pom.xml
index 5529dd8..662a102 100644
--- a/testsuite/integration-arquillian/tests/base/pom.xml
+++ b/testsuite/integration-arquillian/tests/base/pom.xml
@@ -62,7 +62,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
                 <version>2.2</version>
                 <executions>
@@ -75,7 +74,6 @@
             </plugin>
             
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
                     <excludes>
@@ -92,13 +90,32 @@
                 <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
+                        <id>copy-arquillian-xml</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/dependency</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/test/resources</directory>
+                                    <includes>
+                                        <include>arquillian.xml</include>
+                                    </includes>
+                                    <!--<filtering>true</filtering>-->
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
                         <id>copy-admin-user-json-file</id>
                         <phase>process-resources</phase>
                         <goals>
                             <goal>copy-resources</goal>
                         </goals>
                         <configuration>
-                            <outputDirectory>${jboss.server.config.dir}</outputDirectory>
+                            <outputDirectory>${auth.server.config.dir}</outputDirectory>
                             <resources>
                                 <resource>
                                     <directory>src/test/resources</directory>
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/annotation/AdapterLibsLocationProperty.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/annotation/AdapterLibsLocationProperty.java
index 371d732..18bcdcc 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/annotation/AdapterLibsLocationProperty.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/annotation/AdapterLibsLocationProperty.java
@@ -32,5 +32,5 @@ import java.lang.annotation.Target;
 @Target({ElementType.TYPE})
 public @interface AdapterLibsLocationProperty 
 {
-   String value();
+   String value() default "adapter.libs.home";
 }
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AppServerTestEnricher.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AppServerTestEnricher.java
index 9dace92..ea64fe2 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AppServerTestEnricher.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AppServerTestEnricher.java
@@ -1,6 +1,5 @@
 package org.keycloak.testsuite.arquillian;
 
-import org.jboss.arquillian.container.spi.event.container.BeforeDeploy;
 import org.jboss.arquillian.container.test.api.ContainerController;
 import org.jboss.arquillian.core.api.Instance;
 import org.jboss.arquillian.core.api.InstanceProducer;
@@ -18,10 +17,9 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 
-import static org.keycloak.testsuite.arquillian.AuthServerTestEnricher.getAuthServerContextRoot;
-import static org.keycloak.testsuite.arquillian.AuthServerTestEnricher.getAuthServerQualifier;
 import static org.keycloak.testsuite.util.IOUtil.execCommand;
 import static org.keycloak.testsuite.util.WaitUtils.pause;
+import static org.keycloak.testsuite.arquillian.AuthServerTestEnricher.getAuthServerContextRoot;
 
 /**
  *
@@ -44,7 +42,7 @@ public class AppServerTestEnricher {
 
         return annotatedClass == null ? null // no @AppServerContainer annotation --> no adapter test
                 : (appServerQ == null || appServerQ.isEmpty() // @AppServerContainer annotation present but qualifier not set --> relative adapter test
-                        ? getAuthServerQualifier() // app server == auth server
+                        ? AuthServerTestEnricher.AUTH_SERVER_CONTAINER // app server == auth server
                         : appServerQ);
     }
 
@@ -100,28 +98,28 @@ public class AppServerTestEnricher {
     private Instance<ContainerController> containerConrollerInstance;
 
     public void startAppServer(@Observes(precedence = -1) BeforeClass event) throws MalformedURLException, InterruptedException, IOException {
-        if (testContext.isAdapterTest()) {
+        if (testContext.isAdapterTest() && !testContext.isRelativeAdapterTest()) {
             ContainerController controller = containerConrollerInstance.get();
             if (!controller.isStarted(testContext.getAppServerInfo().getQualifier())) {
+                log.info("Starting app server: " + testContext.getAppServerInfo().getQualifier());
                 controller.start(testContext.getAppServerInfo().getQualifier());
             }
         }
     }
 
-    public void installAdapterLibs(@Observes BeforeDeploy event) {
-        log.debug("BEFORE DEPLOY - INSTALL ADAPTER LIBS");
-        if (testContext.isAdapterTest()) {
-            // install adapter libs on JBoss-based container via CLI
-            if (testContext.getAppServerInfo().isJBossBased()) {
-                try {
-                    installAdapterLibsUsingJBossCLIClient(testContext.getAppServerInfo());
-                } catch (InterruptedException | IOException ex) {
-                    throw new RuntimeException("Failed to install adapter libs.", ex);
-                }
-            }
-        }
-    }
-
+//    public void installAdapterLibs(@Observes BeforeDeploy event) {
+//        log.debug("BEFORE DEPLOY - INSTALL ADAPTER LIBS");
+//        if (testContext.isAdapterTest()) {
+//            // install adapter libs on JBoss-based container via CLI
+//            if (testContext.getAppServerInfo().isJBossBased()) {
+//                try {
+//                    installAdapterLibsUsingJBossCLIClient(testContext.getAppServerInfo());
+//                } catch (InterruptedException | IOException ex) {
+//                    throw new RuntimeException("Failed to install adapter libs.", ex);
+//                }
+//            }
+//        }
+//    }
     private void installAdapterLibsUsingJBossCLIClient(ContainerInfo appServerInfo) throws InterruptedException, IOException {
         if (!appServerInfo.isAdapterLibsInstalled()) {
 
@@ -160,7 +158,7 @@ public class AppServerTestEnricher {
                 execCommand(command + " --connect --command=reload" + controllerArg, bin);
                 log.info("Container restarted");
                 pause(5000);
-                if (System.getProperty("app.server.log.check","true").equals("true")) {
+                if (System.getProperty("app.server.log.check", "true").equals("true")) {
                     LogChecker.checkJBossServerLog(jbossHomePath);
                 }
             }
@@ -179,7 +177,7 @@ public class AppServerTestEnricher {
     public static Class getNearestSuperclassWithAnnotation(Class testClass, Class annotationClass) {
         return testClass.isAnnotationPresent(annotationClass) ? testClass
                 : (testClass.getSuperclass().equals(Object.class) ? null // stop recursion
-                        : getNearestSuperclassWithAnnotation(testClass.getSuperclass(), annotationClass)); // continue recursion
+                : getNearestSuperclassWithAnnotation(testClass.getSuperclass(), annotationClass)); // continue recursion
     }
 
     public static boolean hasAppServerContainerAnnotation(Class testClass) {
@@ -187,12 +185,12 @@ public class AppServerTestEnricher {
     }
 
     public static boolean isRelative(Class testClass) {
-        return getAppServerQualifier(testClass).equals(getAuthServerQualifier());
+        return getAppServerQualifier(testClass).equals(AuthServerTestEnricher.AUTH_SERVER_CONTAINER);
     }
 
     public static String getAdapterLibsLocationProperty(Class testClass) {
         Class<? extends AuthServerTestEnricher> annotatedClass = getNearestSuperclassWithAnnotation(testClass, AdapterLibsLocationProperty.class);
-        return (annotatedClass == null ? null
+        return (annotatedClass == null ? "adapter.libs.home"
                 : annotatedClass.getAnnotation(AdapterLibsLocationProperty.class).value());
     }
 
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
index 9cbfce6..a7238c3 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/AuthServerTestEnricher.java
@@ -57,10 +57,15 @@ public class AuthServerTestEnricher {
     @Inject
     private Event<StartContainer> startContainerEvent;
 
-    private static final String AUTH_SERVER_CONTAINER_PROPERTY = "auth.server.container";
     private static final String AUTH_SERVER_CONTAINER_DEFAULT = "auth-server-undertow";
+    private static final String AUTH_SERVER_CONTAINER_PROPERTY = "auth.server.container";
+    public static final String AUTH_SERVER_CONTAINER = System.getProperty(AUTH_SERVER_CONTAINER_PROPERTY, AUTH_SERVER_CONTAINER_DEFAULT);
+
+    private static final String AUTH_SERVER_CLUSTER_PROPERTY = "auth.server.cluster";
+    public static final boolean AUTH_SERVER_CLUSTER = Boolean.parseBoolean(System.getProperty(AUTH_SERVER_CLUSTER_PROPERTY, "false"));
 
     private static final String MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY = "migrated.auth.server.container";
+    public static final String MIGRATED_AUTH_SERVER_CONTAINER = System.getProperty(MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY); // == null if migration not enabled
 
     @Inject
     @SuiteScoped
@@ -71,14 +76,6 @@ public class AuthServerTestEnricher {
     @ClassScoped
     private InstanceProducer<TestContext> testContextProducer;
 
-    public static String getAuthServerQualifier() {
-        return System.getProperty(AUTH_SERVER_CONTAINER_PROPERTY, AUTH_SERVER_CONTAINER_DEFAULT);
-    }
-
-    public static String getMigratedAuthServerQualifier() {
-        return System.getProperty(MIGRATED_AUTH_SERVER_CONTAINER_PROPERTY); // == null if migration not enabled
-    }
-
     public static String getAuthServerContextRoot() {
         return getAuthServerContextRoot(0);
     }
@@ -102,54 +99,38 @@ public class AuthServerTestEnricher {
 
         suiteContext = new SuiteContext(containers);
 
-        String authServerQualifier = getAuthServerQualifier();
-        String migratedAuthServerQualifier = getMigratedAuthServerQualifier();
-
-        // init authServerInfo and authServerBackendsInfo
-        if (authServerQualifier.startsWith("auth-server-")) {
-
-            boolean authServerCluster = authServerQualifier.endsWith("-cluster");
-
-            String authServerType = authServerQualifier.replaceAll("auth-server-", "").replaceAll("-cluster", "");
-
-            log.info("authServerType:" + authServerType);
-
-            String authServerFrontend = authServerCluster
-                    ? "auth-server-" + authServerType + "-balancer" // in cluster mode the load-balancer container serves as auth server frontend
-                    : authServerQualifier; // single-node mode
-            String authServerBackend = "auth-server-" + authServerType + "-backend";
-            int backends = 0;
-            for (ContainerInfo container : suiteContext.getContainers()) {
-                // frontend
-                if (container.getQualifier().equals(authServerFrontend)) {
-                    updateWithAuthServerInfo(container);
-                    suiteContext.setAuthServerInfo(container);
-                }
-                // backends
-                if (container.getQualifier().startsWith(authServerBackend)) {
-                    updateWithAuthServerInfo(container, ++backends);
-                    suiteContext.getAuthServerBackendsInfo().add(container);
-                }
+        String authServerFrontend = AUTH_SERVER_CLUSTER
+                ? "auth-server-balancer-wildfly" // if cluster mode enabled, load-balancer is the frontend
+                : AUTH_SERVER_CONTAINER; // single-node mode
+        String authServerBackend = AUTH_SERVER_CONTAINER + "-backend";
+        int backends = 0;
+        for (ContainerInfo container : suiteContext.getContainers()) {
+            // frontend
+            if (container.getQualifier().equals(authServerFrontend)) {
+                updateWithAuthServerInfo(container);
+                suiteContext.setAuthServerInfo(container);
             }
-
-            // validate auth server setup
-            if (suiteContext.getAuthServerInfo() == null) {
-                throw new RuntimeException(String.format("No auth server activated. A container matching '%s' needs to be enabled in arquillian.xml.", authServerFrontend));
-            }
-            if (authServerCluster && suiteContext.getAuthServerBackendsInfo().isEmpty()) {
-                throw new RuntimeException(String.format("No cluster backend nodes activated. Containers matching '%sN' need to be enabled in arquillian.xml.", authServerBackend));
+            // backends
+            if (AUTH_SERVER_CLUSTER && container.getQualifier().startsWith(authServerBackend)) {
+                updateWithAuthServerInfo(container, ++backends);
+                suiteContext.getAuthServerBackendsInfo().add(container);
             }
+        }
 
-        } else {
-            throw new IllegalArgumentException(String.format("Value of %s should start with 'auth-server-' prefix.", AUTH_SERVER_CONTAINER_PROPERTY));
+        // validate auth server setup
+        if (suiteContext.getAuthServerInfo() == null) {
+            throw new RuntimeException(String.format("No auth server container matching '%s' found in arquillian.xml.", authServerFrontend));
+        }
+        if (AUTH_SERVER_CLUSTER && suiteContext.getAuthServerBackendsInfo().isEmpty()) {
+            throw new RuntimeException(String.format("No auth server container matching '%sN' found in arquillian.xml.", authServerBackend));
         }
 
-        if (migratedAuthServerQualifier != null) {
+        if (MIGRATED_AUTH_SERVER_CONTAINER != null) {
             // init migratedAuthServerInfo
-            if (migratedAuthServerQualifier.startsWith("migrated-auth-server-")) {
+            if (MIGRATED_AUTH_SERVER_CONTAINER.startsWith("migrated-auth-server-")) {
                 for (ContainerInfo container : suiteContext.getContainers()) {
                     // migrated auth server
-                    if (container.getQualifier().equals(migratedAuthServerQualifier)) {
+                    if (container.getQualifier().equals(MIGRATED_AUTH_SERVER_CONTAINER)) {
                         updateWithAuthServerInfo(container);
                         suiteContext.setMigratedAuthServerInfo(container);
                     }
@@ -160,7 +141,7 @@ public class AuthServerTestEnricher {
             // validate setup
             if (suiteContext.getMigratedAuthServerInfo() == null) {
                 throw new RuntimeException(String.format("Migration test was enabled but no auth server from which to migrate was activated. "
-                        + "A container matching '%s' needs to be enabled in arquillian.xml.", migratedAuthServerQualifier));
+                        + "A container matching '%s' needs to be enabled in arquillian.xml.", MIGRATED_AUTH_SERVER_CONTAINER));
             }
         }
 
@@ -201,6 +182,14 @@ public class AuthServerTestEnricher {
             LogChecker.checkJBossServerLog(jbossHomePath);
         }
     }
+//
+//    public void startAuthServerContainer(@Observes BeforeSuite event) {
+//        startContainerEvent.fire(new StartContainer(suiteContext.getAuthServerInfo().getArquillianContainer()));
+//    }
+//
+//    public void stopAuthServerContainer(@Observes AfterSuite event) {
+//        containerController.get().stop(suiteContext.getAuthServerInfo().getQualifier());
+//    }
 
     public void initializeTestContext(@Observes(precedence = 2) BeforeClass event) {
         TestContext testContext = new TestContext(suiteContext, event.getTestClass().getJavaClass());
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/Registry.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/Registry.java
index 571daff..c682597 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/Registry.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/Registry.java
@@ -67,7 +67,7 @@ public class Registry implements ContainerRegistry {
         Validate.notNull(definition, "Definition must be specified");
 
         try {
-            logger.log(Level.INFO, "Registering container: {0}", definition.getContainerName());
+            logger.log(Level.FINE, "Registering container: {0}", definition.getContainerName());
 
             @SuppressWarnings("rawtypes")
             Collection<DeployableContainer> containerAdapters = loader.all(DeployableContainer.class);
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/RegistryCreator.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/RegistryCreator.java
index bb81a01..f1aa524 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/RegistryCreator.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/containers/RegistryCreator.java
@@ -57,14 +57,13 @@ public class RegistryCreator {
 
     @Inject
     private Instance<ServiceLoader> loader;
-    
-    private String authContainer;
-    private String migrationContainer;
-    
+
     public void createRegistry(@Observes ArquillianDescriptor event) {
         ContainerRegistry reg = new Registry(injector.get());
         ServiceLoader serviceLoader = loader.get();
 
+        log.info("arquillian.xml: " + System.getProperty("arquillian.xml"));
+
         @SuppressWarnings("rawtypes")
         Collection<DeployableContainer> containers = serviceLoader.all(DeployableContainer.class);
 
@@ -75,7 +74,7 @@ public class RegistryCreator {
         for (ContainerDef container : event.getContainers()) {
             if (isCreatingContainer(container, containers)) {
                 if (isEnabled(container)) {
-                    checkMultipleEnabledContainers(container);
+                    log.info("Registering container: " + container.getContainerName());
                     reg.create(container, serviceLoader);
                 } else {
                     log.info("Container is disabled: " + container.getContainerName());
@@ -87,7 +86,7 @@ public class RegistryCreator {
             for (ContainerDef container : group.getGroupContainers()) {
                 if (isCreatingContainer(container, containers)) {
                     if (isEnabled(container)) {
-                        //TODO add checkMultipleEnabledContainers according to groups
+                        log.info("Registering container: " + container.getContainerName());
                         reg.create(container, serviceLoader);
                     } else {
                         log.info("Container is disabled: " + container.getContainerName());
@@ -106,28 +105,6 @@ public class RegistryCreator {
         return !props.containsKey(ENABLED)
                 || (props.containsKey(ENABLED) && props.get(ENABLED).equals("true"));
     }
-    
-    private void checkMultipleEnabledContainers(ContainerDef containerDef) {
-        String containerName = containerDef.getContainerName();
-        
-        if (containerName.startsWith("keycloak")) {
-            if (migrationContainer == null) {
-                migrationContainer = containerName;
-            } else {
-                throw new RuntimeException("There is more than one migration container "
-                        + "enabled in arquillian.xml. It has to be enabled at most one. "
-                        + "Do not activate more than one migration profile.");
-            }
-        } else if (containerName.startsWith("auth-server")) {
-            if (authContainer == null) {
-                authContainer = containerName;
-            } else {
-                throw new RuntimeException("There is more than one auth containec enabled "
-                        + "in arquillian.xml. It has to be enabled exactly one. Do not "
-                        + "activate more than one auth profile.");
-            }
-        }
-    }
 
     @SuppressWarnings("rawtypes")
     private boolean isCreatingContainer(ContainerDef containerDef, Collection<DeployableContainer> containers) {
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java
index 63f5436..899a731 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/arquillian/KeycloakArquillianExtension.java
@@ -29,7 +29,6 @@ import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider;
 import org.jboss.arquillian.test.spi.execution.TestExecutionDecider;
 import org.keycloak.testsuite.arquillian.h2.H2TestEnricher;
 import org.keycloak.testsuite.arquillian.migration.MigrationTestExecutionDecider;
-import org.keycloak.testsuite.arquillian.undertow.CustomUndertowContainer;
 
 /**
  *
@@ -54,9 +53,6 @@ public class KeycloakArquillianExtension implements LoadableExtension {
                 .observer(H2TestEnricher.class);
 
         builder
-                .service(DeployableContainer.class, CustomUndertowContainer.class);
-
-        builder
                 .service(TestExecutionDecider.class, MigrationTestExecutionDecider.class);
 
         builder
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/DataTable.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/DataTable.java
index 2b1040a..4a4e197 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/DataTable.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/DataTable.java
@@ -17,6 +17,7 @@
 
 package org.keycloak.testsuite.console.page.fragment;
 
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 
@@ -89,7 +90,7 @@ public class DataTable {
     }
 
     public void clickRowActionButton(WebElement row, String buttonText) {
-        row.findElement(xpath(".//td[contains(@class, 'kc-action-cell') and text()='" + buttonText + "']")).click();
+        row.findElement(xpath(".//button[text()='" + buttonText + "']")).click();
     }
     
 }
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/ModalDialog.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/ModalDialog.java
index 8159d34..df31a47 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/ModalDialog.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/console/page/fragment/ModalDialog.java
@@ -18,9 +18,6 @@
 package org.keycloak.testsuite.console.page.fragment;
 
 import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
-
-import org.jboss.arquillian.graphene.fragment.Root;
-import static org.keycloak.testsuite.util.WaitUtils.pause;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 
@@ -30,9 +27,6 @@ import org.openqa.selenium.support.FindBy;
  */
 public class ModalDialog {
 
-    @Root
-    private WebElement root;
-
     @FindBy(xpath = ".//button[text()='Cancel']")
     private WebElement cancelButton;
     @FindBy(xpath = ".//button[text()='Delete']")
@@ -46,20 +40,16 @@ public class ModalDialog {
     public void ok() {
         waitUntilElement(okButton).is().present();
         okButton.click();
-        waitUntilElement(root).is().not().present();
     }
     
     public void confirmDeletion() {
         waitUntilElement(deleteButton).is().present();
         deleteButton.click();
-        waitUntilElement(root).is().not().present();
-        pause(100);
     }
 
     public void cancel() {
         waitUntilElement(cancelButton).is().present();
         cancelButton.click();
-        waitUntilElement(root).is().not().present();
     }
 
     public void setName(String name) {
@@ -67,4 +57,4 @@ public class ModalDialog {
         nameInput.clear();
         nameInput.sendKeys(name);
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/Timer.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/Timer.java
index 082a2a4..a23acb6 100644
--- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/Timer.java
+++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/util/Timer.java
@@ -35,7 +35,6 @@ import org.jfree.chart.plot.PlotOrientation;
 import org.jfree.data.xy.XYSeries;
 import org.jfree.data.xy.XYSeriesCollection;
 import static org.keycloak.testsuite.util.IOUtil.PROJECT_BUILD_DIRECTORY;
-import static org.jgroups.util.Util.assertTrue;
 
 /**
  *
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
index 2de16e8..a15cdb6 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/AbstractKeycloakTest.java
@@ -120,7 +120,7 @@ public abstract class AbstractKeycloakTest {
         setDefaultPageUriParameters();
 
         driverSettings();
-
+        
         TestEventsLogger.setDriver(driver);
 
         if (!suiteContext.isAdminPasswordUpdated()) {
@@ -276,7 +276,7 @@ public abstract class AbstractKeycloakTest {
     }
 
     private void loadConstantsProperties() throws ConfigurationException {
-        constantsProperties = new PropertiesConfiguration(System.getProperty("testsuite.constants"));
+        constantsProperties = new PropertiesConfiguration("test-constants.properties");
         constantsProperties.setThrowExceptionOnMissing(true);
     }
 
diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml b/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml
index 7c9e96c..f1188a1 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/arquillian.xml
@@ -44,52 +44,42 @@
         <property name="deploymentExportPath">target/deployments</property>
     </engine>
     
-    <!-- KEYCLOAK AUTH SERVERS -->
-    
     <container qualifier="auth-server-undertow" mode="suite" >
         <configuration>
             <property name="enabled">${auth.server.undertow}</property>
             <property name="bindAddress">localhost</property>
-            <property name="adapterImplClass">org.keycloak.testsuite.arquillian.undertow.CustomUndertowContainer</property>
+            <property name="adapterImplClass">org.keycloak.testsuite.arquillian.undertow.KeycloakOnUndertow</property>
             <property name="bindHttpPort">${auth.server.http.port}</property>
         </configuration>
     </container>
     
-    <container qualifier="auth-server-wildfly" mode="suite" >
+    <container qualifier="auth-server-${auth.server}" mode="suite" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly}</property>
+            <property name="enabled">${auth.server.jboss}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-            <property name="jbossHome">${keycloak.home}</property>
-            <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Djboss.bind.address=0.0.0.0 -Xms64m -Xmx512m -XX:MaxPermSize=256m ${adapter.test.props}</property>
+            <property name="jbossHome">${auth.server.home}</property>
+            <property name="serverConfig">standalone.xml</property>
+            <property name="jbossArguments">
+                -Djboss.socket.binding.port-offset=${auth.server.port.offset}
+                -Djboss.bind.address=0.0.0.0 
+                ${adapter.test.props}
+            </property>
+            <property name="javaVmArguments">
+                ${auth.server.memory.settings}
+                -Djava.net.preferIPv4Stack=true
+            </property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
             <property name="javaHome">${auth.server.java.home}</property>
         </configuration>
     </container>
-    
-    <group qualifier="auth-server-wildfly-cluster">
-        <container qualifier="auth-server-wildfly-balancer" mode="suite" >
-            <configuration>
-                <property name="enabled">${auth.server.wildfly.cluster}</property>
-                <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.balancer.home}</property>
-                <property name="jbossArguments">
-                    -Djboss.socket.binding.port-offset=${auth.server.port.offset} 
-                </property>
-                <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
-                    -Djava.net.preferIPv4Stack=true
-                </property>
-                <property name="outputToConsole">${frontend.console.output}</property>
-                <property name="managementPort">${auth.server.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
-            </configuration>
-        </container>
-        <container qualifier="auth-server-wildfly-backend1" mode="manual" >
+
+    <group qualifier="auth-server-${auth.server}-cluster">
+        <container qualifier="auth-server-${auth.server}-backend1" mode="manual" >
             <configuration>
-                <property name="enabled">${auth.server.wildfly.cluster}</property>
+                <property name="enabled">${auth.server.cluster}</property>
                 <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.backend1.home}</property>
+                <property name="jbossHome">${auth.server.backend1.home}</property>
                 <property name="serverConfig">standalone-ha.xml</property>
                 <property name="jbossArguments">
                     -Djboss.socket.binding.port-offset=${auth.server.backend1.port.offset} 
@@ -97,19 +87,19 @@
                     ${adapter.test.props}
                 </property>
                 <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
+                    ${auth.server.memory.settings}
                     -Djava.net.preferIPv4Stack=true
                 </property>
                 <property name="outputToConsole">${backends.console.output}</property>
                 <property name="managementPort">${auth.server.backend1.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+                <property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
             </configuration>
         </container>
-        <container qualifier="auth-server-wildfly-backend2" mode="manual" >
+        <container qualifier="auth-server-${auth.server}-backend2" mode="manual" >
             <configuration>
-                <property name="enabled">${auth.server.wildfly.cluster}</property>
+                <property name="enabled">${auth.server.cluster}</property>
                 <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.backend2.home}</property>
+                <property name="jbossHome">${auth.server.backend2.home}</property>
                 <property name="serverConfig">standalone-ha.xml</property>
                 <property name="jbossArguments">
                     -Djboss.socket.binding.port-offset=${auth.server.backend2.port.offset} 
@@ -117,93 +107,39 @@
                     ${adapter.test.props}
                 </property>
                 <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
+                    ${auth.server.memory.settings}
                     -Djava.net.preferIPv4Stack=true
                 </property>
                 <property name="outputToConsole">${backends.console.output}</property>
                 <property name="managementPort">${auth.server.backend2.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+                <property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
             </configuration>
         </container>
     </group>
-    
-    <container qualifier="auth-server-eap7" mode="suite" >
+
+    <container qualifier="auth-server-balancer-wildfly" mode="suite" >
         <configuration>
-            <property name="enabled">${auth.server.eap7}</property>
+            <property name="enabled">${auth.server.cluster}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-            <property name="jbossHome">${keycloak.home}</property>
-            <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Djboss.bind.address=0.0.0.0 -Xms64m -Xmx512m -XX:MaxPermSize=256m ${adapter.test.props}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="jbossHome">${auth.server.balancer.home}</property>
+            <property name="jbossArguments">
+                -Djboss.socket.binding.port-offset=${auth.server.port.offset} 
+            </property>
+            <property name="javaVmArguments">
+                -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
+                -Djava.net.preferIPv4Stack=true
+            </property>
+            <property name="outputToConsole">${frontend.console.output}</property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="javaHome">${auth.server.java.home}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.jboss.startup.timeout}</property>
         </configuration>
     </container>
-
-    <group qualifier="auth-server-eap7-cluster">
-        <container qualifier="auth-server-eap7-balancer" mode="suite" >
-            <configuration>
-                <property name="enabled">${auth.server.eap7.cluster}</property>
-                <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.balancer.home}</property>
-                <property name="jbossArguments">
-                    -Djboss.socket.binding.port-offset=${auth.server.port.offset} 
-                </property>
-                <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
-                    -Djava.net.preferIPv4Stack=true
-                </property>
-                <property name="outputToConsole">${frontend.console.output}</property>
-                <property name="managementPort">${auth.server.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
-            </configuration>
-        </container>
-        <container qualifier="auth-server-eap7-backend1" mode="manual" >
-            <configuration>
-                <property name="enabled">${auth.server.eap7.cluster}</property>
-                <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.backend1.home}</property>
-                <property name="serverConfig">standalone-ha.xml</property>
-                <property name="jbossArguments">
-                    -Djboss.socket.binding.port-offset=${auth.server.backend1.port.offset} 
-                    -Djboss.node.name=node1
-                    ${adapter.test.props}
-                </property>
-                <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
-                    -Djava.net.preferIPv4Stack=true
-                </property>
-                <property name="outputToConsole">${backends.console.output}</property>
-                <property name="managementPort">${auth.server.backend1.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
-            </configuration>
-        </container>
-        <container qualifier="auth-server-eap7-backend2" mode="manual" >
-            <configuration>
-                <property name="enabled">${auth.server.eap7.cluster}</property>
-                <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
-                <property name="jbossHome">${keycloak.backend2.home}</property>
-                <property name="serverConfig">standalone-ha.xml</property>
-                <property name="jbossArguments">
-                    -Djboss.socket.binding.port-offset=${auth.server.backend2.port.offset} 
-                    -Djboss.node.name=node2
-                    ${adapter.test.props}
-                </property>
-                <property name="javaVmArguments">
-                    -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m
-                    -Djava.net.preferIPv4Stack=true
-                </property>
-                <property name="outputToConsole">${backends.console.output}</property>
-                <property name="managementPort">${auth.server.backend2.management.port}</property>
-                <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
-            </configuration>
-        </container>
-    </group>
-
+    
     <!-- PREVIOUS VERSIONS OF KEYCLOAK FOR MIGRATION TESTS -->
     
-    <container qualifier="auth-server-wildfly-kc16" mode="manual" >
+    <container qualifier="auth-server-jboss-kc16" mode="manual" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly.kc16}</property>
+            <property name="enabled">${auth.server.jboss.kc16}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
             <property name="jbossHome">${keycloak.migration.home}</property>
             <property name="javaVmArguments">
@@ -216,13 +152,13 @@
                 -Xms64m -Xmx512m -XX:MaxPermSize=256m
             </property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
         </configuration>
     </container>
     
-    <container qualifier="auth-server-wildfly-kc15" mode="manual" >
+    <container qualifier="auth-server-jboss-kc15" mode="manual" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly.kc15}</property>
+            <property name="enabled">${auth.server.jboss.kc15}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
             <property name="jbossHome">${keycloak.migration.home}</property>
             <property name="javaVmArguments">
@@ -235,49 +171,41 @@
                 -Xms64m -Xmx512m -XX:MaxPermSize=256m
             </property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
         </configuration>
     </container>
     
-    <container qualifier="auth-server-wildfly-kc14" mode="manual" >
+    <container qualifier="auth-server-jboss-kc14" mode="manual" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly.kc14}</property>
+            <property name="enabled">${auth.server.jboss.kc14}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
             <property name="jbossHome">${keycloak.migration.home}</property>
             <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
         </configuration>
     </container>
     
-    <container qualifier="auth-server-wildfly-kc13" mode="manual" >
+    <container qualifier="auth-server-jboss-kc13" mode="manual" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly.kc13}</property>
+            <property name="enabled">${auth.server.jboss.kc13}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
             <property name="jbossHome">${keycloak.migration.home}</property>
             <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
         </configuration>
     </container>
     
-    <container qualifier="auth-server-wildfly-kc12" mode="manual" >
+    <container qualifier="auth-server-jboss-kc12" mode="manual" >
         <configuration>
-            <property name="enabled">${auth.server.wildfly.kc12}</property>
+            <property name="enabled">${auth.server.jboss.kc12}</property>
             <property name="adapterImplClass">org.jboss.as.arquillian.container.managed.ManagedDeployableContainer</property>
             <property name="jbossHome">${keycloak.migration.home}</property>
             <property name="javaVmArguments">-Djboss.socket.binding.port-offset=${auth.server.port.offset} -Xms64m -Xmx512m -XX:MaxPermSize=256m</property>
             <property name="managementPort">${auth.server.management.port}</property>
-            <property name="startupTimeoutInSeconds">${startup.timeout.sec}</property>
+            <property name="startupTimeoutInSeconds">${auth.server.startup.timeout}</property>
         </configuration>
     </container>
-    
-    <!--
-    
-     APP SERVER CONTAINERS ARE ADDED BY XSL TRANSFORMATIONS IN ADAPTER TEST SUBMODULES 
-     The configuration of various application containers had to be split into multiple 
-     maven submodules: tests/other/adapters, which are activated on demand by profiles.
-     
-    -->
-
+            
 </arquillian>
diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json b/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
index 111d510..ae0f5f9 100755
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/META-INF/keycloak-server.json
@@ -83,8 +83,7 @@
             "password": "${keycloak.connectionsJpa.password:}",
             "databaseSchema": "${keycloak.connectionsJpa.databaseSchema:update}",
             "showSql": "${keycloak.connectionsJpa.showSql:false}",
-            "formatSql": "${keycloak.connectionsJpa.formatSql:true}",
-            "globalStatsInterval": "${keycloak.connectionsJpa.globalStatsInterval:-1}"
+            "formatSql": "${keycloak.connectionsJpa.formatSql:true}"
         }
     },
 
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/pom.xml
new file mode 100644
index 0000000..b051db7
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/pom.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-as7</artifactId>
+
+    <name>Adapter Tests - JBoss - JBossAS 7</name>
+    
+    <properties>
+        <app.server>as7</app.server>
+        <adapter.libs.home>${app.server.home}/modules/org/keycloak</adapter.libs.home>
+        
+        <app.server.management.protocol>remote</app.server.management.protocol>
+        <app.server.management.port>${app.server.management.port.jmx}</app.server.management.port>
+        
+        <app.server.java.home>${java7.home}</app.server.java.home>
+        <app.server.memory.settings>-Xms64m -Xmx512m -XX:MaxPermSize=256m</app.server.memory.settings>
+    </properties>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireProperty>
+                                    <property>java7.home</property>
+                                </requireProperty>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/src/test/java/org/keycloak/testsuite/adapter/AS7OIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/src/test/java/org/keycloak/testsuite/adapter/AS7OIDCAdapterTest.java
new file mode 100644
index 0000000..93dec26
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/as7/src/test/java/org/keycloak/testsuite/adapter/AS7OIDCAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-as7")
+//@AdapterLibsLocationProperty("adapter.libs.as7")
+public class AS7OIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/pom.xml
new file mode 100644
index 0000000..c30978c
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-eap</artifactId>
+
+    <name>Adapter Tests - JBoss - EAP</name>
+    
+    <properties>
+        <app.server>eap</app.server>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCAdapterTest.java
new file mode 100644
index 0000000..4912f06
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCAdapterTest.java
@@ -0,0 +1,16 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+import org.junit.Ignore;
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-eap")
+//@AdapterLibsLocationProperty("adapter.libs.eap7")
+//@Ignore //failing tests
+public class EAPOIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCSessionAdapterTest.java
new file mode 100644
index 0000000..e1db84f
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPOIDCSessionAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-eap")
+//@AdapterLibsLocationProperty("adapter.libs.eap7")
+public class EAPOIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPSAMLAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPSAMLAdapterTest.java
new file mode 100644
index 0000000..8852087
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/EAPSAMLAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSAMLServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ * @author mhajas
+ */
+@AppServerContainer("app-server-eap")
+//@AdapterLibsLocationProperty("adapter.libs.eap7")
+public class EAPSAMLAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/example/EAPDemoExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/example/EAPDemoExampleAdapterTest.java
new file mode 100644
index 0000000..fa22b56
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap/src/test/java/org/keycloak/testsuite/adapter/example/EAPDemoExampleAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-eap")
+//@AdapterLibsLocationProperty("adapter.libs.eap7")
+public class EAPDemoExampleAdapterTest extends AbstractDemoExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/pom.xml
new file mode 100644
index 0000000..d013600
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-eap6</artifactId>
+
+    <name>Adapter Tests - JBoss - EAP 6</name>
+    
+    <properties>
+        <app.server>eap6</app.server>
+
+        <app.server.management.protocol>remote</app.server.management.protocol>
+        <app.server.management.port>${app.server.management.port.jmx}</app.server.management.port>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/src/test/java/org/keycloak/testsuite/adapter/EAP6OIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/src/test/java/org/keycloak/testsuite/adapter/EAP6OIDCSessionAdapterTest.java
new file mode 100644
index 0000000..82f5926
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/eap6/src/test/java/org/keycloak/testsuite/adapter/EAP6OIDCSessionAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-eap6")
+//@AdapterLibsLocationProperty("adapter.libs.eap6")
+public class EAP6OIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/pom.xml
new file mode 100644
index 0000000..23301fb
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/pom.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+
+    <packaging>pom</packaging>
+
+    <name>Adapter Tests - JBoss</name>
+    
+    <properties>
+        <common.resources>${project.parent.basedir}/common</common.resources>
+        <adapter.libs.home>${app.server.home}/modules/system/add-ons/keycloak</adapter.libs.home>
+    </properties>
+    
+    <profiles>
+        <profile>
+            <id>adapter-test-jboss-submodules</id>
+            <activation>
+                <file>
+                    <exists>src</exists>
+                </file>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.wildfly</groupId>
+                    <artifactId>wildfly-arquillian-container-managed</artifactId>
+                </dependency>                
+            </dependencies>            
+        </profile>
+        
+        <profile>
+            <id>app-server-as7</id>
+            <modules>
+                <module>as7</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-eap</id>
+            <modules>
+                <module>eap</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-eap6</id>
+            <modules>
+                <module>eap6</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-wildfly</id>
+            <modules>
+                <module>wildfly</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-wildfly8</id>
+            <modules>
+                <module>wildfly8</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-wildfly9</id>
+            <modules>
+                <module>wildfly9</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-relative</id>
+            <modules>
+                <module>relative</module>
+            </modules>
+        </profile>                
+        
+    </profiles>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPCorsExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPCorsExampleAdapterTest.java
new file mode 100644
index 0000000..a718a3b
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPCorsExampleAdapterTest.java
@@ -0,0 +1,10 @@
+package org.keycloak.testsuite.adapter.example;
+
+/**
+ *
+ * @author fkiss
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPCorsExampleAdapterTest extends AbstractCorsExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPDemoExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPDemoExampleAdapterTest.java
new file mode 100644
index 0000000..d2775bf
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPDemoExampleAdapterTest.java
@@ -0,0 +1,10 @@
+package org.keycloak.testsuite.adapter.example;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPDemoExampleAdapterTest extends AbstractDemoExampleAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPJSConsoleExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPJSConsoleExampleAdapterTest.java
new file mode 100644
index 0000000..d11f68b
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPJSConsoleExampleAdapterTest.java
@@ -0,0 +1,10 @@
+package org.keycloak.testsuite.adapter.example;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPJSConsoleExampleAdapterTest extends AbstractJSConsoleExampleAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPSAMLExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPSAMLExampleAdapterTest.java
new file mode 100644
index 0000000..6361e83
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/example/RelativeEAPSAMLExampleAdapterTest.java
@@ -0,0 +1,10 @@
+package org.keycloak.testsuite.adapter.example;
+
+/**
+ *
+ * @author mhajas
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPSAMLExampleAdapterTest extends AbstractSAMLExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCAdapterTest.java
new file mode 100644
index 0000000..249ec6b
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPOIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCSessionAdapterTest.java
new file mode 100644
index 0000000..9ef19ce
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPOIDCSessionAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPOIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPSAMLAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPSAMLAdapterTest.java
new file mode 100644
index 0000000..cd27bee
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/eap/src/test/java/org/keycloak/testsuite/adapter/RelativeEAPSAMLAdapterTest.java
@@ -0,0 +1,11 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSAMLServletsAdapterTest;
+
+/**
+ * @author mhajas
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeEAPSAMLAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/pom.xml
new file mode 100644
index 0000000..96558d7
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+    
+    <packaging>pom</packaging>
+
+    <artifactId>integration-arquillian-tests-adapters-jboss-relative</artifactId>
+
+    <name>Adapter Tests - JBoss - Relative</name>
+    
+    <properties>
+        <common.resources>${project.parent.parent.basedir}/common</common.resources>
+        
+        <app.server.skip.unpack>true</app.server.skip.unpack>
+        
+        <auth.server.jboss>false</auth.server.jboss>
+        <auth.server.container>app-server-${app.server}</auth.server.container>
+        <auth.server.jboss.artifactId>${app.server.artifactId}</auth.server.jboss.artifactId>
+        
+        <app.server.mode>suite</app.server.mode>
+        
+        <app.server.port.offset>${auth.server.port.offset}</app.server.port.offset>
+        <app.server.http.port>${auth.server.http.port}</app.server.http.port>
+        <app.server.https.port>${auth.server.https.port}</app.server.https.port>
+        <app.server.management.port>${auth.server.management.port}</app.server.management.port>
+
+        <app.server.startup.timeout>${auth.server.jboss.startup.timeout}</app.server.startup.timeout>
+        <app.server.memory.settings>${auth.server.memory.settings}</app.server.memory.settings>
+        <app.server.ssl.required>${auth.server.ssl.required}</app.server.ssl.required>        
+    </properties>
+    
+    <profiles>
+        <profile>
+            <id>auth-server-wildfly</id>
+            <modules>
+                <module>wildfly</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>auth-server-eap</id>
+            <modules>
+                <module>eap</module>
+            </modules>
+        </profile>
+    </profiles>
+        
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCAdapterTest.java
new file mode 100644
index 0000000..dd7b733
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeWildflyOIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCSessionAdapterTest.java
new file mode 100644
index 0000000..021d25b
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflyOIDCSessionAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeWildflyOIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflySAMLAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflySAMLAdapterTest.java
new file mode 100644
index 0000000..0413cee
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/relative/wildfly/src/test/java/org/keycloak/testsuite/adapter/RelativeWildflySAMLAdapterTest.java
@@ -0,0 +1,11 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSAMLServletsAdapterTest;
+
+/**
+ * @author mhajas
+ */
+//@AdapterLibsLocationProperty("adapter.libs.eap")
+public class RelativeWildflySAMLAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/example/WildflySAMLExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/example/WildflySAMLExampleAdapterTest.java
new file mode 100644
index 0000000..e8627aa
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/example/WildflySAMLExampleAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ * @author mhajas
+ */
+@AppServerContainer("app-server-wildfly")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly")
+public class WildflySAMLExampleAdapterTest extends AbstractSAMLExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/WildflySAMLAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/WildflySAMLAdapterTest.java
new file mode 100644
index 0000000..8e00445
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly/src/test/java/org/keycloak/testsuite/adapter/WildflySAMLAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSAMLServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ * @author mhajas
+ */
+@AppServerContainer("app-server-wildfly")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly")
+public class WildflySAMLAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/pom.xml
new file mode 100644
index 0000000..6c288a0
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-wildfly8</artifactId>
+
+    <name>Adapter Tests - JBoss - Wildfly 8</name>
+    
+    <properties>
+        <app.server>wildfly8</app.server>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCAdapterTest.java
new file mode 100644
index 0000000..10f3d8d
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly8")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly8")
+public class Wildfly8OIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCSessionAdapterTest.java
new file mode 100644
index 0000000..06f2df7
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly8/src/test/java/org/keycloak/testsuite/adapter/Wildfly8OIDCSessionAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly8")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly8")
+public class Wildfly8OIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/pom.xml
new file mode 100644
index 0000000..d4a5e6b
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-jboss</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-wildfly9</artifactId>
+
+    <name>Adapter Tests - JBoss - Wildfly 9</name>
+    
+    <properties>
+        <app.server>wildfly9</app.server>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9BasicAuthExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9BasicAuthExampleAdapterTest.java
new file mode 100644
index 0000000..bb70e9e
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9BasicAuthExampleAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9BasicAuthExampleAdapterTest extends AbstractBasicAuthExampleAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9DemoExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9DemoExampleAdapterTest.java
new file mode 100644
index 0000000..d1af7fa
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9DemoExampleAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9DemoExampleAdapterTest extends AbstractDemoExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9SAMLExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9SAMLExampleAdapterTest.java
new file mode 100644
index 0000000..7f55123
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/example/Wildfly9SAMLExampleAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ * @author mhajas
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9SAMLExampleAdapterTest extends AbstractSAMLExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCAdapterTest.java
new file mode 100644
index 0000000..621cd20
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9OIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCSessionAdapterTest.java
new file mode 100644
index 0000000..3f7ddce
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9OIDCSessionAdapterTest.java
@@ -0,0 +1,14 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9OIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9SAMLAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9SAMLAdapterTest.java
new file mode 100644
index 0000000..77f8eb1
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/jboss/wildfly9/src/test/java/org/keycloak/testsuite/adapter/Wildfly9SAMLAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSAMLServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ * @author mhajas
+ */
+@AppServerContainer("app-server-wildfly9")
+//@AdapterLibsLocationProperty("adapter.libs.wildfly9")
+public class Wildfly9SAMLAdapterTest extends AbstractSAMLServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse61/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse61/pom.xml
new file mode 100644
index 0000000..908b08c
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse61/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-fuse61</artifactId>
+
+    <name>Adapter Tests - Karaf - JBoss Fuse 6.1</name>
+        
+    <properties>
+        <app.server>fuse61</app.server>
+
+        <app.server.management.user>admin</app.server.management.user>
+        <app.server.management.password>admin</app.server.management.password>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse62/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse62/pom.xml
new file mode 100644
index 0000000..b839725
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/karaf/fuse62/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-fuse62</artifactId>
+
+    <name>Adapter Tests - Karaf - JBoss Fuse 6.2</name>
+        
+    <properties>
+        <app.server>fuse62</app.server>
+
+        <app.server.management.user>admin</app.server.management.user>
+        <app.server.management.password>admin</app.server.management.password>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/karaf/karaf3/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/karaf/karaf3/pom.xml
new file mode 100644
index 0000000..4243562
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/karaf/karaf3/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-karaf</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-karaf3</artifactId>
+
+    <name>Adapter Tests - Karaf - Karaf 3</name>
+        
+    <properties>
+        <app.server>karaf3</app.server>
+        
+        <app.server.management.user>karaf</app.server.management.user>
+        <app.server.management.password>karaf</app.server.management.password>
+    </properties>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/karaf/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/karaf/pom.xml
index 421217e..9fc7753 100644
--- a/testsuite/integration-arquillian/tests/other/adapters/karaf/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/adapters/karaf/pom.xml
@@ -1,35 +1,41 @@
 <?xml version="1.0"?>
 <!--
-  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
-  ~ and other contributors as indicated by the @author tags.
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
 
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-tests-adapters</artifactId>
         <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>integration-arquillian-adapters-karaf</artifactId>
-    <name>Adapter Tests on Karaf</name>
-    
+    <artifactId>integration-arquillian-tests-adapters-karaf</artifactId>
+
+    <packaging>pom</packaging>
+
+    <name>Adapter Tests - Karaf</name>
+        
     <properties>
-                
+        <common.resources>${project.parent.basedir}/common</common.resources>
+
         <!--fuse examples expect auth server on 8080-->
         <auth.server.port.offset>0</auth.server.port.offset>
         <auth.server.http.port>8080</auth.server.http.port>
@@ -38,127 +44,96 @@
         <app.server.http.port>8181</app.server.http.port>
                 
     </properties>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.jboss.arquillian.container</groupId>
-            <artifactId>arquillian-container-karaf-managed</artifactId>
-            <version>2.1.0.CR18</version>
-        </dependency>
-        
-        <dependency>
-            <groupId>org.apache.aries.jmx</groupId>
-            <artifactId>org.apache.aries.jmx</artifactId>
-            <version>1.1.1</version>
-        </dependency>
-        
-        <dependency>
-            <groupId>jline</groupId>
-            <artifactId>jline</artifactId>
-            <version>2.12</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sshd</groupId>
-            <artifactId>sshd-core</artifactId>
-            <version>0.12.0</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.console</artifactId>
-            <version>3.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf</groupId>
-            <artifactId>org.apache.karaf.client</artifactId>
-            <version>3.0.3</version>
-        </dependency>  
-        
-    </dependencies>
-
+    
     <profiles>
-        
-        <profile>
-            <id>fuse</id>
-            <activation>
-                <property>
-                    <name>fuse.home</name>
-                </property>
-            </activation>
-            <properties>
-                <karaf.home>${fuse.home}</karaf.home>
-                <arquillian.xml.stylesheet>src/main/xslt/arquillian-fuse.xsl</arquillian.xml.stylesheet>
-            </properties>
-        </profile>
-        
         <profile>
-            <id>karaf</id>
+            <id>adapter-test-karaf-submodules</id>
             <activation>
-                <property>
-                    <name>!fuse.home</name>
-                </property>
+                <file>
+                    <exists>src</exists>
+                </file>
             </activation>
-            <properties>
-                <karaf.version>3.0.3</karaf.version>
-                <karaf.home>${containers.home}/apache-karaf-minimal-${karaf.version}</karaf.home>
-            </properties>
             <dependencies>
+
                 <dependency>
-                    <groupId>org.apache.karaf</groupId>
-                    <artifactId>apache-karaf-minimal</artifactId>
-                    <version>${karaf.version}</version>
-                    <type>zip</type>
+                    <groupId>org.jboss.arquillian.container</groupId>
+                    <artifactId>arquillian-container-karaf-managed</artifactId>
+                    <version>2.1.0.CR18</version>
+                </dependency>
+        
+                <dependency>
+                    <groupId>org.apache.aries.jmx</groupId>
+                    <artifactId>org.apache.aries.jmx</artifactId>
+                    <version>1.1.1</version>
+                </dependency>
+        
+                <dependency>
+                    <groupId>jline</groupId>
+                    <artifactId>jline</artifactId>
+                    <version>2.12</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.sshd</groupId>
+                    <artifactId>sshd-core</artifactId>
+                    <version>0.12.0</version>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.karaf.shell</groupId>
+                    <artifactId>org.apache.karaf.shell.console</artifactId>
+                    <version>3.0.3</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.apache.karaf</groupId>
+                    <artifactId>org.apache.karaf.client</artifactId>
+                    <version>3.0.3</version>
+                </dependency>  
             </dependencies>
             <build>
                 <plugins>
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-dependency-plugin</artifactId>
+                        <artifactId>maven-enforcer-plugin</artifactId>
                         <executions>
                             <execution>
-                                <id>unpack-karaf</id>
-                                <phase>generate-resources</phase>
                                 <goals>
-                                    <goal>unpack</goal>
+                                    <goal>enforce</goal>
                                 </goals>
                                 <configuration>
-                                    <artifactItems>
-                                        <artifactItem>
-                                            <groupId>org.apache.karaf</groupId>
-                                            <artifactId>apache-karaf-minimal</artifactId>
-                                            <version>${karaf.version}</version>
-                                            <type>zip</type>
-                                            <outputDirectory>${containers.home}</outputDirectory>
-                                        </artifactItem>
-                                    </artifactItems>
-                                    <overWriteIfNewer>true</overWriteIfNewer>
+                                    <rules>
+                                        <requireProperty>
+                                            <property>auth.server</property>
+                                            <regex>(wildfly)|(eap)</regex>
+                                            <regexMessage>Karaf/Fuse adapter tests require activation of profile "auth-server-wildfly" or "auth-server-eap".</regexMessage>
+                                        </requireProperty>
+                                    </rules>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
                 </plugins>
-            </build>        
+            </build>
         </profile>
+        
+        
+        <profile>
+            <id>app-server-karaf3</id>
+            <modules>
+                <module>karaf3</module>
+            </modules>
+        </profile>        
+        <profile>
+            <id>app-server-fuse61</id>
+            <modules>
+                <module>fuse61</module>
+            </modules>
+        </profile>        
+        <profile>
+            <id>app-server-fuse62</id>
+            <modules>
+                <module>fuse62</module>
+            </modules>
+        </profile>                
+        
     </profiles>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <app.server.karaf>true</app.server.karaf>
-                        <karaf.home>${karaf.home}</karaf.home>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>xml-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-            
-</project>
+
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/pom.xml
index 21b0ab4..f46954a 100644
--- a/testsuite/integration-arquillian/tests/other/adapters/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/adapters/pom.xml
@@ -1,20 +1,20 @@
 <?xml version="1.0"?>
 <!--
-  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
-  ~ and other contributors as indicated by the @author tags.
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
 
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
@@ -34,83 +34,140 @@
     <name>Adapter Tests</name>
     
     <properties>
+        
+        <app.server.arquillian.xsl>${common.resources}/xslt/arquillian.xsl</app.server.arquillian.xsl>
+        
+        <app.server.artifactId>integration-arquillian-servers-app-server-${app.server}</app.server.artifactId>
+        <app.server.skip.unpack>false</app.server.skip.unpack>
+        
+        <app.server.mode>manual</app.server.mode>
+        
         <app.server.port.offset>200</app.server.port.offset>
         <app.server.http.port>8280</app.server.http.port>
         <app.server.https.port>8643</app.server.https.port>
+        <app.server.management.protocol>http-remoting</app.server.management.protocol>
         <app.server.management.port>10190</app.server.management.port>
         <app.server.management.port.jmx>10199</app.server.management.port.jmx>
+        <app.server.startup.timeout>60</app.server.startup.timeout>
+        <app.server.memory.settings>-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m</app.server.memory.settings>
+        
         <app.server.ssl.required>false</app.server.ssl.required>
+        
         <adapter.test.props>-Dapp.server.base.url=http://localhost:${app.server.http.port} -Dmy.host.name=localhost</adapter.test.props>
-        <exclude.adapters>-</exclude.adapters>
         
-        <arquillian.xml.stylesheet>src/main/xslt/arquillian.xsl</arquillian.xml.stylesheet>
-        <skip.install.adapters>false</skip.install.adapters>
+        <app.server.home>${containers.home}/app-server-${app.server}</app.server.home>
+        <adapter.libs.mode>bundled</adapter.libs.mode>
+        <adapter.config.mode>bundled</adapter.config.mode>
+        
     </properties>
+        
+    <modules>
+        <module>jboss</module>
+        <module>karaf</module>
+        <module>tomcat</module>
+    </modules>
     
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>xml-maven-plugin</artifactId>
-                    <executions>
-                        <execution>
-                            <id>add-app-server-to-arquillian-xml</id>
-                            <phase>process-resources</phase>
-                            <goals>
-                                <goal>transform</goal>
-                            </goals>
-                            <configuration>
-                                <transformationSets>
-                                    <transformationSet>
-                                        <dir>${project.build.directory}/dependency</dir>
-                                        <includes>
-                                            <include>arquillian.xml</include>
-                                        </includes>
-                                        <stylesheet>${arquillian.xml.stylesheet}</stylesheet>
-                                        <parameters>
-                                            <parameter>
-                                                <name>keycloak.version</name>
-                                                <value>${project.version}</value>
-                                            </parameter>
-                                        </parameters>
-                                        <outputDir>${project.build.directory}/dependency</outputDir>
-                                    </transformationSet>
-                                </transformationSets>
-                            </configuration>
-                        </execution>
-                    </executions>
-                </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <configuration>
-                        <systemPropertyVariables>
-
-                            <app.server.port.offset>${app.server.port.offset}</app.server.port.offset>
-                            <app.server.http.port>${app.server.http.port}</app.server.http.port>
-                            <app.server.https.port>${app.server.https.port}</app.server.https.port>
-                            <app.server.management.port>${app.server.management.port}</app.server.management.port>
-                            <app.server.management.port.jmx>${app.server.management.port.jmx}</app.server.management.port.jmx>
-                            <app.server.ssl.required>${app.server.ssl.required}</app.server.ssl.required>
-
-                            <adapter.test.props>${adapter.test.props}</adapter.test.props>
+    <profiles>
 
-                            <adapter.libs.mode>bundled</adapter.libs.mode>
-                            <adapter.config.mode>provided</adapter.config.mode>
+        <profile>
+            <id>adapter-test-submodules</id>
+            <activation>
+                <file>
+                    <exists>src</exists>
+                </file>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>xml-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>add-app-server-to-arquillian-xml</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>transform</goal>
+                                </goals>
+                                <configuration>
+                                    <transformationSets>
+                                        <transformationSet>
+                                            <dir>${project.build.directory}/dependency</dir>
+                                            <includes>
+                                                <include>arquillian.xml</include>
+                                            </includes>
+                                            <stylesheet>${app.server.arquillian.xsl}</stylesheet>
+                                            <parameters>
+                                                <parameter>
+                                                    <name>keycloak.version</name>
+                                                    <value>${project.version}</value>
+                                                </parameter>
+                                            </parameters>
+                                            <outputDir>${project.build.directory}/dependency</outputDir>
+                                        </transformationSet>
+                                    </transformationSets>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-app-server</id>
+                                <phase>generate-test-resources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.keycloak.testsuite</groupId>
+                                            <artifactId>${app.server.artifactId}</artifactId>        
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <outputDirectory>${containers.home}</outputDirectory>
+                                    <skip>${app.server.skip.unpack}</skip>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <systemPropertyVariables>
+                                <app.server>${app.server}</app.server>
+                                <app.server.home>${app.server.home}</app.server.home>
+                                <app.server.java.home>${app.server.java.home}</app.server.java.home>
                             
-                        </systemPropertyVariables>
-                        <excludes>
-                            <exclude>${exclude.adapters}</exclude>
-                        </excludes>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>        
-    </build>
-    
-    <profiles>
+                                <app.server.mode>${app.server.mode}</app.server.mode>
+                            
+                                <app.server.port.offset>${app.server.port.offset}</app.server.port.offset>
+                                <app.server.http.port>${app.server.http.port}</app.server.http.port>
+                                <app.server.https.port>${app.server.https.port}</app.server.https.port>
+                                <app.server.management.protocol>${app.server.management.protocol}</app.server.management.protocol>
+                                <app.server.management.user>${app.server.management.user}</app.server.management.user>
+                                <app.server.management.password>${app.server.management.password}</app.server.management.password>
+                                <app.server.management.port>${app.server.management.port}</app.server.management.port>
+                                <app.server.management.port.jmx>${app.server.management.port.jmx}</app.server.management.port.jmx>
+                                <app.server.ssl.required>${app.server.ssl.required}</app.server.ssl.required>
+                                
+                                <app.server.startup.timeout>${app.server.startup.timeout}</app.server.startup.timeout>
+                                <app.server.memory.settings>${app.server.memory.settings}</app.server.memory.settings>
+
+                                <adapter.test.props>${adapter.test.props}</adapter.test.props>
 
+                                <adapter.libs.home>${adapter.libs.home}</adapter.libs.home>
+                                <adapter.libs.mode>${adapter.libs.mode}</adapter.libs.mode>
+                                <adapter.config.mode>${adapter.config.mode}</adapter.config.mode>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        
         <profile>
             <id>adapter-libs-provided</id>
             <activation>    
@@ -118,21 +175,9 @@
                     <name>!adapter.libs.bundled</name>
                 </property>
             </activation>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <adapter.libs.mode>provided</adapter.libs.mode>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
+            <properties>
+                <adapter.libs.mode>provided</adapter.libs.mode>
+            </properties>
         </profile>
         
         <profile>
@@ -146,7 +191,6 @@
                 <pluginManagement>
                     <plugins>
                         <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-dependency-plugin</artifactId>
                             <executions>
                                 <execution>
@@ -251,7 +295,6 @@
                             </executions>
                         </plugin>            
                         <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-surefire-plugin</artifactId>
                             <configuration>
                                 <systemPropertyVariables>
@@ -286,70 +329,6 @@
             </build>
         </profile>
         
-        <profile>
-            <id>app-server-eap6</id>
-            <modules>
-                <module>eap6</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-eap7</id>
-            <modules>
-                <module>eap7</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-wildfly</id>
-            <modules>
-                <module>wildfly</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-wildfly-relative</id>
-            <modules>
-                <module>wildfly-relative</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-wildfly8</id>
-            <modules>
-                <module>wildfly8</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-as7</id>
-            <modules>
-                <module>as7</module>
-            </modules>
-        </profile>
-        
-        <profile>
-            <id>app-server-tomcat</id>
-            <modules>
-                <module>tomcat</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>app-server-karaf</id>
-            <modules>
-                <module>karaf</module>
-            </modules>
-        </profile>
-        <profile>
-            <id>no-adapter-tests</id>
-            <properties>
-                <!-- Exclude all adapters tests. -->
-                <exclude.adapters>**/adapter/**/*Test.java</exclude.adapters>
-            </properties>
-        </profile>
-        <profile>
-            <id>no-relative</id>
-            <properties>
-                <!-- Exclude relative adapters tests. -->
-                <exclude.adapters>**/adapter/**/WildflyRelative*Test.java</exclude.adapters>
-            </properties>
-        </profile>
-        
     </profiles>
 
 </project>
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/tomcat/pom.xml
index 01b3349..daf6968 100644
--- a/testsuite/integration-arquillian/tests/other/adapters/tomcat/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/pom.xml
@@ -1,153 +1,65 @@
 <?xml version="1.0"?>
 <!--
-  ~ Copyright 2016 Red Hat, Inc. and/or its affiliates
-  ~ and other contributors as indicated by the @author tags.
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~ http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
 
 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
     <parent>
         <groupId>org.keycloak.testsuite</groupId>
         <artifactId>integration-arquillian-tests-adapters</artifactId>
         <version>1.9.2.Final-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>integration-arquillian-adapters-tomcat</artifactId>
-    <name>Adapter Tests on Tomcat</name>
+    <artifactId>integration-arquillian-tests-adapters-tomcat</artifactId>
+
+    <packaging>pom</packaging>
+
+    <name>Adapter Tests - Tomcat</name>
     
     <properties>
-        <tomcat.version>8.0.23</tomcat.version>
-        <tomcat.home>${containers.home}/apache-tomcat-${tomcat.version}</tomcat.home>
-        <!-- FIXME disabled port-offset because tomcat doesn't support it -->
+        <common.resources>${project.parent.basedir}/common</common.resources>
+        <!--TODO: implement "port offset" for tomcat-->
         <app.server.port.offset>0</app.server.port.offset>
         <app.server.http.port>8080</app.server.http.port>
         <app.server.management.port>9990</app.server.management.port>
     </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.jboss.arquillian.container</groupId>
-            <artifactId>arquillian-tomcat-managed-7</artifactId>
-            <version>1.0.0.CR7</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <version>2.10</version>
-                <executions>
-                    <execution>
-                        <id>unpack-tomcat-and-adapter</id>
-                        <phase>generate-test-resources</phase>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.tomcat</groupId>
-                                    <artifactId>tomcat</artifactId>
-                                    <version>${tomcat.version}</version>
-                                    <type>zip</type>
-                                    <outputDirectory>${containers.home}</outputDirectory>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>org.keycloak</groupId>
-                                    <artifactId>keycloak-tomcat8-adapter-dist</artifactId>
-                                    <version>${project.version}</version>
-                                    <type>zip</type>
-                                    <outputDirectory>${tomcat.home}/lib</outputDirectory>
-                                </artifactItem>
-                            </artifactItems>
-                            <overWriteIfNewer>true</overWriteIfNewer>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>libs-for-tomcat</id>
-                        <phase>generate-test-resources</phase>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.jboss.resteasy</groupId>
-                                    <artifactId>resteasy-client</artifactId>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>org.jboss.spec.javax.ws.rs</groupId>
-                                    <artifactId>jboss-jaxrs-api_2.0_spec</artifactId>
-                                </artifactItem>                                        
-                                <artifactItem>
-                                    <groupId>org.jboss.resteasy</groupId>
-                                    <artifactId>resteasy-jaxrs</artifactId>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>commons-io</groupId>
-                                    <artifactId>commons-io</artifactId>
-                                    <version>1.4</version>
-                                </artifactItem>
-                            </artifactItems>
-                            <outputDirectory>${tomcat.home}/lib</outputDirectory>
-                            <overWriteIfNewer>true</overWriteIfNewer>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>xml-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>add-tomcat-manager-user</id>
-                        <phase>process-test-resources</phase>
-                        <goals>
-                            <goal>transform</goal>
-                        </goals>
-                        <configuration>
-                            <transformationSets>
-                                <transformationSet>
-                                    <dir>${tomcat.home}/conf</dir>
-                                    <stylesheet>src/main/xslt/tomcat-users.xsl</stylesheet>
-                                    <includes>
-                                        <include>tomcat-users.xml</include>
-                                    </includes>
-                                    <outputDir>${tomcat.home}/conf</outputDir>
-                                </transformationSet>
-                            </transformationSets>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <app.server.tomcat>true</app.server.tomcat>
-                        <tomcat.home>${tomcat.home}</tomcat.home>
-                        <!-- TODO: implement port-offset for tomcat server.xml so we can shift from 8080 -->
-                        <app.server.management.port.tomcat>8089</app.server.management.port.tomcat>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+    <profiles>
+        <profile>
+            <id>app-server-tomcat7</id>
+            <modules>
+                <module>tomcat7</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-tomcat8</id>
+            <modules>
+                <module>tomcat8</module>
+            </modules>
+        </profile>
+        <profile>
+            <id>app-server-tomcat9</id>
+            <modules>
+                <module>tomcat9</module>
+            </modules>
+        </profile>
+    </profiles>
 
-</project>
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat7/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat7/pom.xml
new file mode 100644
index 0000000..9902fd9
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat7/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-tomcat7</artifactId>
+
+    <name>Adapter Tests - Tomcat - Tomcat 7</name>
+    
+    <properties>
+        <app.server>tomcat7</app.server>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.arquillian.container</groupId>
+            <artifactId>arquillian-tomcat-managed-7</artifactId>
+            <version>1.0.0.CR7</version>
+        </dependency>
+    </dependencies>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/pom.xml
new file mode 100644
index 0000000..d8511be
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-tomcat8</artifactId>
+
+    <name>Adapter Tests - Tomcat - Tomcat 8</name>
+    
+    <properties>
+        <app.server>tomcat8</app.server>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.arquillian.container</groupId>
+            <artifactId>arquillian-tomcat-managed-7</artifactId>
+            <version>1.0.0.CR7</version>
+        </dependency>
+    </dependencies>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/example/Tomcat8DemoExampleAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/example/Tomcat8DemoExampleAdapterTest.java
new file mode 100644
index 0000000..ef3d06d
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/example/Tomcat8DemoExampleAdapterTest.java
@@ -0,0 +1,12 @@
+package org.keycloak.testsuite.adapter.example;
+
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-tomcat8")
+public class Tomcat8DemoExampleAdapterTest extends AbstractDemoExampleAdapterTest {
+
+}
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/Tomcat8OIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/Tomcat8OIDCAdapterTest.java
new file mode 100644
index 0000000..ce6255f
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat8/src/test/java/org/keycloak/testsuite/adapter/Tomcat8OIDCAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-tomcat8")
+public class Tomcat8OIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/pom.xml b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/pom.xml
new file mode 100644
index 0000000..397146c
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<!--
+~ Copyright 2016 Red Hat, Inc. and/or its affiliates
+~ and other contributors as indicated by the @author tags.
+~
+~ Licensed under the Apache License, Version 2.0 (the "License");
+~ you may not use this file except in compliance with the License.
+~ You may obtain a copy of the License at
+~
+~ http://www.apache.org/licenses/LICENSE-2.0
+~
+~ Unless required by applicable law or agreed to in writing, software
+~ distributed under the License is distributed on an "AS IS" BASIS,
+~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~ See the License for the specific language governing permissions and
+~ limitations under the License.
+-->
+
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.keycloak.testsuite</groupId>
+        <artifactId>integration-arquillian-tests-adapters-tomcat</artifactId>
+        <version>1.9.2.Final-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>integration-arquillian-tests-adapters-tomcat9</artifactId>
+
+    <name>Adapter Tests - Tomcat - Tomcat 9</name>
+    
+    <properties>
+        <app.server>tomcat9</app.server>
+    </properties>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.jboss.arquillian.container</groupId>
+            <artifactId>arquillian-tomcat-managed-7</artifactId>
+            <version>1.0.0.CR7</version>
+        </dependency>
+    </dependencies>
+    
+</project>
\ No newline at end of file
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCAdapterTest.java
new file mode 100644
index 0000000..e52fb4d
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractDemoServletsAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-tomcat9")
+public class Tomcat9OIDCAdapterTest extends AbstractDemoServletsAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCSessionAdapterTest.java b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCSessionAdapterTest.java
new file mode 100644
index 0000000..6e880d8
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/other/adapters/tomcat/tomcat9/src/test/java/org/keycloak/testsuite/adapter/Tomcat9OIDCSessionAdapterTest.java
@@ -0,0 +1,13 @@
+package org.keycloak.testsuite.adapter;
+
+import org.keycloak.testsuite.adapter.servlet.AbstractSessionServletAdapterTest;
+import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
+
+/**
+ *
+ * @author tkyjovsk
+ */
+@AppServerContainer("app-server-tomcat9")
+public class Tomcat9OIDCSessionAdapterTest extends AbstractSessionServletAdapterTest {
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/pom.xml b/testsuite/integration-arquillian/tests/other/console/pom.xml
index 116000e..e43de66 100644
--- a/testsuite/integration-arquillian/tests/other/console/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/console/pom.xml
@@ -35,7 +35,6 @@
         <pluginManagement>
             <plugins>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
                     <executions>
                         <execution>
@@ -45,7 +44,7 @@
                                 <goal>copy-resources</goal>
                             </goals>
                             <configuration>
-                                <outputDirectory>${keycloak.home}/themes</outputDirectory>
+                                <outputDirectory>${auth.server.home}/themes</outputDirectory>
                                 <resources>
                                     <resource>
                                         <directory>src/main/resources/themes</directory>
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
index 39ce3f0..81e0f2d 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/PasswordPolicy.java
@@ -1,7 +1,6 @@
 package org.keycloak.testsuite.console.page.authentication;
 
 import org.jboss.arquillian.graphene.findby.ByJQuery;
-import org.keycloak.testsuite.page.Form;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -15,7 +14,6 @@ import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
  * @author Petr Mensik
  * @author tkyjovsk
  * @author mhajas
- * @author Vaclav Muzikar <vmuzikar@redhat.com>
  */
 public class PasswordPolicy extends Authentication {
 
@@ -30,10 +28,10 @@ public class PasswordPolicy extends Authentication {
     @FindBy(tagName = "select")
     private WebElement addPolicySelectElement;
 
-    @FindBy(tagName = "table")
-    private WebElement table;
+    @FindBy(css = "tr.ng-scope")
+    private List<WebElement> allRows;
 
-    public void addPolicy(Type policy, String value) {
+    public void addPolicy(PasswordPolicy.Type policy, String value) {
         waitUntilElement(addPolicySelectElement).is().present();
         addPolicySelect.selectByVisibleText(policy.getName());
         setPolicyValue(policy, value);
@@ -41,36 +39,45 @@ public class PasswordPolicy extends Authentication {
     }
 
 
-    public void addPolicy(Type policy, int value) {
+    public void addPolicy(PasswordPolicy.Type policy, int value) {
         addPolicy(policy, String.valueOf(value));
     }
 
-    public void addPolicy(Type policy) {
+    public void addPolicy(PasswordPolicy.Type policy) {
         addPolicySelect.selectByVisibleText(policy.getName());
         primaryButton.click();
     }
 
-    public void removePolicy(Type policy) {
-        getPolicyRow(policy).findElement(By.cssSelector("td.kc-action-cell")).click();
+    public void removePolicy(PasswordPolicy.Type policy) {
+        int policyInputLocation = findPolicy(policy);
+        allRows.get(policyInputLocation).findElements(By.tagName("button")).get(0).click();
         primaryButton.click();
     }
 
-    public void editPolicy(Type policy, int value) {
+    public void editPolicy(PasswordPolicy.Type policy, int value) {
         editPolicy(policy, String.valueOf(value));
     }
 
-    public void editPolicy(Type policy, String value) {
+    public void editPolicy(PasswordPolicy.Type policy, String value) {
         setPolicyValue(policy, value);
         primaryButton.click();
     }
 
-    private void setPolicyValue(Type policy, String value) {
-        WebElement input = getPolicyRow(policy).findElement(By.tagName("input"));
-        Form.setInputValue(input, value);
+    private void setPolicyValue(PasswordPolicy.Type policy, String value) {
+        int policyInputLocation = findPolicy(policy);
+        WebElement input = allRows.get(policyInputLocation).findElement(By.tagName("input"));
+        input.clear();
+        input.sendKeys(value);
     }
 
-    private WebElement getPolicyRow(Type policy) {
-        return table.findElement(By.xpath("//tr[td[text()='" + policy.getName() + "']]"));
+    private int findPolicy(PasswordPolicy.Type policy) {
+        for (int i = 0; i < allRows.size(); i++) {
+            String policyName = allRows.get(i).findElement(ByJQuery.selector("td:eq(0)")).getText();
+            if (policyName.equals(policy.getName())) {
+                return i;
+            }
+        }
+        return 0;
     }
 
     public enum Type {
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/RequiredActions.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/RequiredActions.java
index 7e4c29c..b6f182a 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/RequiredActions.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/authentication/RequiredActions.java
@@ -1,6 +1,5 @@
 package org.keycloak.testsuite.console.page.authentication;
 
-import org.keycloak.testsuite.util.WaitUtils;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
@@ -29,8 +28,6 @@ public class RequiredActions extends Authentication {
     }
 
     private void setRequiredActionValue(String id, boolean value) {
-        WaitUtils.waitUntilElement(requiredActionTable).is().present();
-
         WebElement checkbox = requiredActionTable.findElement(By.id(id));
 
         if (checkbox.isSelected() != value) {
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java
index c289e67..0269e03 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/CreateClientForm.java
@@ -1,6 +1,13 @@
 package org.keycloak.testsuite.console.page.clients;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.jboss.arquillian.graphene.page.Page;
 import org.keycloak.representations.idm.ClientRepresentation;
+import static org.keycloak.testsuite.auth.page.login.OIDCLogin.OIDC;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.*;
+import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
 import org.keycloak.testsuite.page.Form;
 import static org.keycloak.testsuite.page.Form.getInputValue;
 import static org.keycloak.testsuite.util.WaitUtils.*;
@@ -21,6 +28,13 @@ public class CreateClientForm extends Form {
     @FindBy(id = "protocol")
     private Select protocolSelect;
     
+    @Page
+    private SAMLClientSettingsForm samlForm;
+
+    public SAMLClientSettingsForm samlForm() {
+        return samlForm;
+    }
+
     public void setValues(ClientRepresentation client) {
         waitUntilElement(clientIdInput).is().present();
 
@@ -36,6 +50,22 @@ public class CreateClientForm extends Form {
         setInputValue(clientIdInput, clientId);
     }
 
+    public enum OidcAccessType {
+        BEARER_ONLY("bearer-only"),
+        PUBLIC("public"),
+        CONFIDENTIAL("confidential");
+        
+        private final String name;
+
+        private OidcAccessType(String name) {
+            this.name = name;
+        }
+
+        public String getName() {
+            return name;
+        }
+    }
+
     public String getProtocol() {
         waitUntilElement(protocolSelect.getFirstSelectedOption()).is().present();
         return protocolSelect.getFirstSelectedOption().getText();
@@ -46,4 +76,86 @@ public class CreateClientForm extends Form {
         protocolSelect.selectByVisibleText(protocol);
         Timer.DEFAULT.reset("clientSettings.setProtocol()");
     }
-}
\ No newline at end of file
+
+    public class SAMLClientSettingsForm extends Form {
+
+        public static final String SAML_ASSERTION_SIGNATURE = "saml.assertion.signature";
+        public static final String SAML_AUTHNSTATEMENT = "saml.authnstatement";
+	public static final String SAML_CLIENT_SIGNATURE = "saml.client.signature";
+	public static final String SAML_ENCRYPT = "saml.encrypt";
+	public static final String SAML_FORCE_POST_BINDING = "saml.force.post.binding";
+	public static final String SAML_MULTIVALUED_ROLES = "saml.multivalued.roles";
+	public static final String SAML_SERVER_SIGNATURE = "saml.server.signature";
+	public static final String SAML_SIGNATURE_ALGORITHM = "saml.signature.algorithm";
+	public static final String SAML_ASSERTION_CONSUMER_URL_POST = "saml_assertion_consumer_url_post";
+	public static final String SAML_ASSERTION_CONSUMER_URL_REDIRECT = "saml_assertion_consumer_url_redirect";
+	public static final String SAML_FORCE_NAME_ID_FORMAT = "saml_force_name_id_format";
+	public static final String SAML_NAME_ID_FORMAT = "saml_name_id_format";
+	public static final String SAML_SIGNATURE_CANONICALIZATION_METHOD = "saml_signature_canonicalization_method";
+	public static final String SAML_SINGLE_LOGOUT_SERVICE_URL_POST = "saml_single_logout_service_url_post";
+	public static final String SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT = "saml_single_logout_service_url_redirect";
+        
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlAuthnStatement']]")
+        private OnOffSwitch samlAuthnStatement;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlServerSignature']]")
+        private OnOffSwitch samlServerSignature;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlAssertionSignature']]")
+        private OnOffSwitch samlAssertionSignature;
+        @FindBy(id = "signatureAlgorithm")
+        private Select signatureAlgorithm;
+        @FindBy(id = "canonicalization")
+        private Select canonicalization;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlEncrypt']]")
+        private OnOffSwitch samlEncrypt;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlClientSignature']]")
+        private OnOffSwitch samlClientSignature;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlForcePostBinding']]")
+        private OnOffSwitch samlForcePostBinding;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='frontchannelLogout']]")
+        private OnOffSwitch frontchannelLogout;
+        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlForceNameIdFormat']]")
+        private OnOffSwitch samlForceNameIdFormat;
+        @FindBy(id = "samlNameIdFormat")
+        private Select samlNameIdFormat;
+        
+        @FindBy(xpath = "//fieldset[contains(@data-ng-show, 'saml')]//i")
+        private WebElement fineGrainCollapsor;
+        
+        @FindBy(id = "consumerServicePost")
+        private WebElement consumerServicePostInput;
+        @FindBy(id = "consumerServiceRedirect")
+        private WebElement consumerServiceRedirectInput;
+        @FindBy(id = "logoutPostBinding")
+        private WebElement logoutPostBindingInput;
+        @FindBy(id = "logoutRedirectBinding")
+        private WebElement logoutRedirectBindingInput;
+        
+        public void setValues(ClientRepresentation client) {
+            waitUntilElement(fineGrainCollapsor).is().visible();
+            
+            Map<String, String> attributes = client.getAttributes();
+            samlAuthnStatement.setOn("true".equals(attributes.get(SAML_AUTHNSTATEMENT)));
+            samlServerSignature.setOn("true".equals(attributes.get(SAML_SERVER_SIGNATURE)));
+            samlAssertionSignature.setOn("true".equals(attributes.get(SAML_ASSERTION_SIGNATURE)));
+            if (samlServerSignature.isOn() || samlAssertionSignature.isOn()) {
+                signatureAlgorithm.selectByVisibleText(attributes.get(SAML_SIGNATURE_ALGORITHM));
+                canonicalization.selectByValue("string:" + attributes.get(SAML_SIGNATURE_CANONICALIZATION_METHOD));
+            }
+            samlEncrypt.setOn("true".equals(attributes.get(SAML_ENCRYPT)));
+            samlClientSignature.setOn("true".equals(attributes.get(SAML_CLIENT_SIGNATURE)));
+            samlForcePostBinding.setOn("true".equals(attributes.get(SAML_FORCE_POST_BINDING)));
+            frontchannelLogout.setOn(client.isFrontchannelLogout());
+            samlForceNameIdFormat.setOn("true".equals(attributes.get(SAML_FORCE_NAME_ID_FORMAT)));
+            samlNameIdFormat.selectByVisibleText(attributes.get(SAML_NAME_ID_FORMAT));
+            
+            fineGrainCollapsor.click();
+            waitUntilElement(consumerServicePostInput).is().present();
+            
+            setInputValue(consumerServicePostInput, attributes.get(SAML_ASSERTION_CONSUMER_URL_POST));
+            setInputValue(consumerServiceRedirectInput, attributes.get(SAML_ASSERTION_CONSUMER_URL_REDIRECT));
+            setInputValue(logoutPostBindingInput, attributes.get(SAML_SINGLE_LOGOUT_SERVICE_URL_POST));
+            setInputValue(logoutRedirectBindingInput, attributes.get(SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT));
+        }
+    }
+
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/credentials/ClientCredentialsGeneratePrivateKeysForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/credentials/ClientCredentialsGeneratePrivateKeysForm.java
index f5afcac..1994c0a 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/credentials/ClientCredentialsGeneratePrivateKeysForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/credentials/ClientCredentialsGeneratePrivateKeysForm.java
@@ -22,7 +22,6 @@
 package org.keycloak.testsuite.console.page.clients.credentials;
 
 import org.keycloak.testsuite.page.Form;
-import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.ui.Select;
@@ -69,7 +68,6 @@ public class ClientCredentialsGeneratePrivateKeysForm extends Form {
     }
     
     public void clickGenerateAndDownload() {
-        waitUntilElement(generateAndDownloadButton).is().present();
         generateAndDownloadButton.click();
     }    
 }
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/mappers/CreateClientMappersForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/mappers/CreateClientMappersForm.java
index 9eae0be..73957bc 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/mappers/CreateClientMappersForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/mappers/CreateClientMappersForm.java
@@ -2,7 +2,6 @@ package org.keycloak.testsuite.console.page.clients.mappers;
 
 import org.keycloak.testsuite.console.page.fragment.OnOffSwitch;
 import org.keycloak.testsuite.page.Form;
-import static org.keycloak.testsuite.util.WaitUtils.pause;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.ui.Select;
@@ -110,7 +109,6 @@ public class CreateClientMappersForm extends Form {
                 realmAvailable.selectByVisibleText(roleName);
             }
             selectRealmRoleButton.click();
-            pause(500); // wait for the modal dialog to fade out
         }
         
         public void selectClientRole(String clientName, String roleName) {
@@ -119,7 +117,6 @@ public class CreateClientMappersForm extends Form {
                 clientAvailable.selectByVisibleText(roleName);
             }
             selectClientRoleButton.click();
-            pause(500); // wait for the modal dialog to fade out
         }
     }
     
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/settings/ClientSettingsForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/settings/ClientSettingsForm.java
index 17c98df..1e89e98 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/settings/ClientSettingsForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/clients/settings/ClientSettingsForm.java
@@ -8,13 +8,14 @@ import org.openqa.selenium.support.FindBy;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 import org.keycloak.testsuite.console.page.clients.CreateClientForm;
 import org.openqa.selenium.support.ui.Select;
 
-import org.keycloak.testsuite.page.Form;
+import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.BEARER_ONLY;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.PUBLIC;
 import static org.keycloak.testsuite.util.WaitUtils.pause;
-import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
 
 /**
  * @author tkyjovsk
@@ -51,11 +52,11 @@ public class ClientSettingsForm extends CreateClientForm {
 
     @FindBy(id = "newRedirectUri")
     private WebElement newRedirectUriInput;
-    @FindBy(xpath = ".//i[contains(@data-ng-click, 'newRedirectUri') and @class='fa fa-plus']")
+    @FindBy(xpath = ".//i[contains(@data-ng-click, 'newRedirectUri')]")
     private WebElement newRedirectUriSubmit;
     @FindBy(xpath = ".//input[@ng-model='client.redirectUris[i]']")
     private List<WebElement> redirectUriInputs;
-    @FindBy(xpath = ".//i[contains(@data-ng-click, 'deleteRedirectUri') and @class='fa fa-minus']")
+    @FindBy(xpath = ".//i[contains(@data-ng-click, 'deleteRedirectUri')]")
     private List<WebElement> deleteRedirectUriIcons;
 
     @FindBy(id = "newWebOrigin")
@@ -67,22 +68,9 @@ public class ClientSettingsForm extends CreateClientForm {
     @FindBy(xpath = ".//i[contains(@data-ng-click, 'deleteWebOrigin')]")
     private List<WebElement> deleteWebOriginIcons;
 
-    public enum OidcAccessType {
-        BEARER_ONLY("bearer-only"),
-        PUBLIC("public"),
-        CONFIDENTIAL("confidential");
-        
-        private final String name;
-
-        private OidcAccessType(String name) {
-            this.name = name;
-        }
+    @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='consentRequired']]")
+    private OnOffSwitch consentRequired;
 
-        public String getName() {
-            return name;
-        }
-    }
-        
     public void setBaseUrl(String baseUrl) {
         setInputValue(baseUrlInput, baseUrl);
     }
@@ -125,6 +113,32 @@ public class ClientSettingsForm extends CreateClientForm {
         }
     }
 
+    @Override
+    public void setValues(ClientRepresentation client) {
+        super.setValues(client);
+        setName(client.getName());
+        setEnabled(client.isEnabled());
+        setConsentRequired(client.isConsentRequired());
+        setBaseUrl(client.getBaseUrl());
+        if (OIDC.equals(client.getProtocol())) {
+            setAccessType(client);
+            if (!client.isBearerOnly()) {
+                setStandardFlowEnabled(client.isStandardFlowEnabled());
+                setDirectAccessGrantsEnabled(client.isDirectAccessGrantsEnabled());
+                if (client.isPublicClient()) {
+                    setImplicitFlowEnabled(client.isImplicitFlowEnabled());
+                } else {//confidential
+                    setServiceAccountsEnabled(client.isServiceAccountsEnabled());
+                }
+                if (client.isStandardFlowEnabled() || client.isImplicitFlowEnabled()) {
+                    setRedirectUris(client.getRedirectUris());
+                }
+            }
+            setAdminUrl(client.getAdminUrl());
+            setWebOrigins(client.getWebOrigins());
+        }
+    }
+
     public String getName() {
         return getInputValue(nameInput);
     }
@@ -149,8 +163,14 @@ public class ClientSettingsForm extends CreateClientForm {
         consentRequiredSwitch.setOn(consentRequired);
     }
 
-    public void setAccessType(OidcAccessType accessType) {
-        accessTypeSelect.selectByVisibleText(accessType.getName());
+    public void setAccessType(ClientRepresentation client) {
+        if (client.isBearerOnly()) {
+            accessTypeSelect.selectByVisibleText(BEARER_ONLY.getName());
+        } else if (client.isPublicClient()) {
+            accessTypeSelect.selectByVisibleText(PUBLIC.getName());
+        } else {
+            accessTypeSelect.selectByVisibleText(CONFIDENTIAL.getName());
+        }
     }
 
     public void addRedirectUri(String redirectUri) {
@@ -213,86 +233,5 @@ public class ClientSettingsForm extends CreateClientForm {
     public void setServiceAccountsEnabled(boolean serviceAccountsEnabled) {
         serviceAccountsEnabledSwitch.setOn(serviceAccountsEnabled);
     }
-    
-    public class SAMLClientSettingsForm extends Form {
-
-        public static final String SAML_ASSERTION_SIGNATURE = "saml.assertion.signature";
-        public static final String SAML_AUTHNSTATEMENT = "saml.authnstatement";
-	public static final String SAML_CLIENT_SIGNATURE = "saml.client.signature";
-	public static final String SAML_ENCRYPT = "saml.encrypt";
-	public static final String SAML_FORCE_POST_BINDING = "saml.force.post.binding";
-	public static final String SAML_MULTIVALUED_ROLES = "saml.multivalued.roles";
-	public static final String SAML_SERVER_SIGNATURE = "saml.server.signature";
-	public static final String SAML_SIGNATURE_ALGORITHM = "saml.signature.algorithm";
-	public static final String SAML_ASSERTION_CONSUMER_URL_POST = "saml_assertion_consumer_url_post";
-	public static final String SAML_ASSERTION_CONSUMER_URL_REDIRECT = "saml_assertion_consumer_url_redirect";
-	public static final String SAML_FORCE_NAME_ID_FORMAT = "saml_force_name_id_format";
-	public static final String SAML_NAME_ID_FORMAT = "saml_name_id_format";
-	public static final String SAML_SIGNATURE_CANONICALIZATION_METHOD = "saml_signature_canonicalization_method";
-	public static final String SAML_SINGLE_LOGOUT_SERVICE_URL_POST = "saml_single_logout_service_url_post";
-	public static final String SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT = "saml_single_logout_service_url_redirect";
-        
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlAuthnStatement']]")
-        private OnOffSwitch samlAuthnStatement;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlServerSignature']]")
-        private OnOffSwitch samlServerSignature;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlAssertionSignature']]")
-        private OnOffSwitch samlAssertionSignature;
-        @FindBy(id = "signatureAlgorithm")
-        private Select signatureAlgorithm;
-        @FindBy(id = "canonicalization")
-        private Select canonicalization;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlEncrypt']]")
-        private OnOffSwitch samlEncrypt;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlClientSignature']]")
-        private OnOffSwitch samlClientSignature;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlForcePostBinding']]")
-        private OnOffSwitch samlForcePostBinding;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='frontchannelLogout']]")
-        private OnOffSwitch frontchannelLogout;
-        @FindBy(xpath = ".//div[@class='onoffswitch' and ./input[@id='samlForceNameIdFormat']]")
-        private OnOffSwitch samlForceNameIdFormat;
-        @FindBy(id = "samlNameIdFormat")
-        private Select samlNameIdFormat;
-        
-        @FindBy(xpath = "//fieldset[contains(@data-ng-show, 'saml')]//i")
-        private WebElement fineGrainCollapsor;
-        
-        @FindBy(id = "consumerServicePost")
-        private WebElement consumerServicePostInput;
-        @FindBy(id = "consumerServiceRedirect")
-        private WebElement consumerServiceRedirectInput;
-        @FindBy(id = "logoutPostBinding")
-        private WebElement logoutPostBindingInput;
-        @FindBy(id = "logoutRedirectBinding")
-        private WebElement logoutRedirectBindingInput;
-        
-        public void setValues(ClientRepresentation client) {
-            waitUntilElement(fineGrainCollapsor).is().visible();
-            
-            Map<String, String> attributes = client.getAttributes();
-            samlAuthnStatement.setOn("true".equals(attributes.get(SAML_AUTHNSTATEMENT)));
-            samlServerSignature.setOn("true".equals(attributes.get(SAML_SERVER_SIGNATURE)));
-            samlAssertionSignature.setOn("true".equals(attributes.get(SAML_ASSERTION_SIGNATURE)));
-            if (samlServerSignature.isOn() || samlAssertionSignature.isOn()) {
-                signatureAlgorithm.selectByVisibleText(attributes.get(SAML_SIGNATURE_ALGORITHM));
-                canonicalization.selectByValue("string:" + attributes.get(SAML_SIGNATURE_CANONICALIZATION_METHOD));
-            }
-            samlEncrypt.setOn("true".equals(attributes.get(SAML_ENCRYPT)));
-            samlClientSignature.setOn("true".equals(attributes.get(SAML_CLIENT_SIGNATURE)));
-            samlForcePostBinding.setOn("true".equals(attributes.get(SAML_FORCE_POST_BINDING)));
-            frontchannelLogout.setOn(client.isFrontchannelLogout());
-            samlForceNameIdFormat.setOn("true".equals(attributes.get(SAML_FORCE_NAME_ID_FORMAT)));
-            samlNameIdFormat.selectByVisibleText(attributes.get(SAML_NAME_ID_FORMAT));
-            
-            fineGrainCollapsor.click();
-            waitUntilElement(consumerServicePostInput).is().present();
-            
-            setInputValue(consumerServicePostInput, attributes.get(SAML_ASSERTION_CONSUMER_URL_POST));
-            setInputValue(consumerServiceRedirectInput, attributes.get(SAML_ASSERTION_CONSUMER_URL_REDIRECT));
-            setInputValue(logoutPostBindingInput, attributes.get(SAML_SINGLE_LOGOUT_SERVICE_URL_POST));
-            setInputValue(logoutRedirectBindingInput, attributes.get(SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT));
-        }
-    }
 
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/federation/LdapUserProviderForm.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/federation/LdapUserProviderForm.java
index 88e207c..2d927a9 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/federation/LdapUserProviderForm.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/federation/LdapUserProviderForm.java
@@ -191,10 +191,6 @@ public class LdapUserProviderForm extends Form {
         vendorSelect.selectByVisibleText(vendor);
     }
 
-    public void selectVendor(int index) {
-        vendorSelect.selectByIndex(index);
-    }
-
     public List<String> getVendors() {
         waitUntilElement(By.id("vendor")).is().present();
 
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/realm/RealmSettings.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/realm/RealmSettings.java
index b6e51eb..2080962 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/realm/RealmSettings.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/realm/RealmSettings.java
@@ -1,8 +1,6 @@
 package org.keycloak.testsuite.console.page.realm;
 
 import org.keycloak.testsuite.console.page.AdminConsoleRealm;
-import org.keycloak.testsuite.util.WaitUtils;
-import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.support.FindBy;
 
@@ -13,14 +11,11 @@ import static org.keycloak.testsuite.util.WaitUtils.*;
  * @author tkyjovsk
  */
 public class RealmSettings extends AdminConsoleRealm {
-    private static final String navTabsClassName = "nav-tabs";
 
-
-    @FindBy(className = navTabsClassName)
+    @FindBy(className = "nav-tabs")
     private RealmTabs realmTabs;
 
     public RealmTabs tabs() {
-        waitUntilElement(By.className(navTabsClassName)).is().present();
         return realmTabs;
     }
 
diff --git a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/roles/RoleCompositeRoles.java b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/roles/RoleCompositeRoles.java
index b4ab777..070f49a 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/roles/RoleCompositeRoles.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/main/java/org/keycloak/testsuite/console/page/roles/RoleCompositeRoles.java
@@ -11,12 +11,9 @@ import java.util.Map;
 import java.util.Set;
 import org.keycloak.representations.idm.RoleRepresentation.Composites;
 import org.keycloak.testsuite.page.Form;
-import static org.keycloak.testsuite.util.WaitUtils.pause;
 import static org.keycloak.testsuite.util.WaitUtils.waitUntilElement;
 import org.openqa.selenium.By;
 import org.openqa.selenium.WebElement;
-import org.openqa.selenium.logging.LogEntries;
-import org.openqa.selenium.logging.LogEntry;
 import org.openqa.selenium.support.FindBy;
 import org.openqa.selenium.support.ui.Select;
 
@@ -109,7 +106,6 @@ public class RoleCompositeRoles extends Form {
                     select.selectByVisibleText(role);
                 }
             }
-            waitUntilElement(button).is().enabled();
             button.click();
         }
     }
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authentication/OTPPolicyTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authentication/OTPPolicyTest.java
index 73173a7..2bd3a6b 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authentication/OTPPolicyTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/authentication/OTPPolicyTest.java
@@ -32,7 +32,6 @@ import org.keycloak.testsuite.console.page.authentication.otppolicy.OTPPolicy;
 import org.keycloak.testsuite.console.page.authentication.otppolicy.OTPPolicyForm.Digits;
 import org.keycloak.testsuite.console.page.authentication.otppolicy.OTPPolicyForm.OTPHashAlg;
 import org.keycloak.testsuite.console.page.authentication.otppolicy.OTPPolicyForm.OTPType;
-import org.keycloak.testsuite.util.WaitUtils;
 
 /**
  *
@@ -46,7 +45,6 @@ public class OTPPolicyTest extends AbstractConsoleTest {
     @Before
     public void beforeOTPPolicyTest() {
         otpPolicyPage.navigateTo();
-        WaitUtils.pause(1000); // wait for the form to fully render
     }
     
     @Test
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/AbstractClientTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/AbstractClientTest.java
index 877aa3f..0f68266 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/AbstractClientTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/AbstractClientTest.java
@@ -1,10 +1,12 @@
 package org.keycloak.testsuite.console.clients;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import org.jboss.arquillian.graphene.page.Page;
+import static org.junit.Assert.assertEquals;
 import org.junit.Before;
 import org.keycloak.admin.client.resource.ClientResource;
 import org.keycloak.admin.client.resource.ClientsResource;
@@ -16,20 +18,32 @@ import org.keycloak.testsuite.console.AbstractConsoleTest;
 import org.keycloak.testsuite.console.page.clients.Client;
 import org.keycloak.testsuite.console.page.clients.Clients;
 import org.keycloak.testsuite.console.page.clients.CreateClient;
+import org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType;
+import org.keycloak.testsuite.console.page.clients.settings.ClientSettings;
 import org.keycloak.testsuite.util.WaitUtils;
 import org.openqa.selenium.By;
+
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.*;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_ASSERTION_CONSUMER_URL_POST;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_ASSERTION_CONSUMER_URL_REDIRECT;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_ASSERTION_SIGNATURE;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_AUTHNSTATEMENT;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_CLIENT_SIGNATURE;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_ENCRYPT;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_FORCE_NAME_ID_FORMAT;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_FORCE_POST_BINDING;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_MULTIVALUED_ROLES;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_NAME_ID_FORMAT;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_SERVER_SIGNATURE;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_SIGNATURE_ALGORITHM;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_SIGNATURE_CANONICALIZATION_METHOD;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_SINGLE_LOGOUT_SERVICE_URL_POST;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.SAMLClientSettingsForm.SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT;
 import static org.keycloak.testsuite.util.AttributesAssert.assertEqualsBooleanAttributes;
 import static org.keycloak.testsuite.util.AttributesAssert.assertEqualsListAttributes;
 import static org.keycloak.testsuite.util.AttributesAssert.assertEqualsStringAttributes;
-import static org.junit.Assert.assertEquals;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_AUTHNSTATEMENT;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_CLIENT_SIGNATURE;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_FORCE_NAME_ID_FORMAT;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_FORCE_POST_BINDING;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_NAME_ID_FORMAT;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_SERVER_SIGNATURE;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.SAML_SIGNATURE_ALGORITHM;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
+import static org.keycloak.testsuite.util.WaitUtils.pause;
 
 /**
  *
@@ -38,7 +52,7 @@ import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
 public abstract class AbstractClientTest extends AbstractConsoleTest {
 
     public final String TEST_CLIENT_ID = "test-client";
-    public final List<String> TEST_REDIRECT_URIs = Arrays.asList(new String[]{"http://example.test/app/"});
+    public final String TEST_REDIRECT_URIS = "http://example.test/app/*";
 
     @Page
     protected Clients clientsPage;
@@ -46,9 +60,12 @@ public abstract class AbstractClientTest extends AbstractConsoleTest {
     protected Client clientPage; // note: cannot call navigateTo() unless client id is set
     @Page
     protected CreateClient createClientPage;
+    @Page
+    protected ClientSettings clientSettingsPage;
 
     @Before
     public void beforeClientTest() {
+//        configure().clients();
         clientsPage.navigateTo();
     }
 
@@ -59,35 +76,78 @@ public abstract class AbstractClientTest extends AbstractConsoleTest {
         createClientPage.form().setValues(client);
         createClientPage.form().save();
         assertAlertSuccess();
+
+        pause(500); // To ensure that the form will be loaded completely
+
+        clientSettingsPage.form().setValues(client);
+        if (SAML.equals(client.getProtocol())) {
+            createClientPage.form().samlForm().setValues(client);
+        }
+        clientSettingsPage.form().save();
     }
 
-    public static ClientRepresentation createClientRep(String clientId, String protocol) {
+    private static ClientRepresentation createClientRep(String clientId) {
         ClientRepresentation client = new ClientRepresentation();
         client.setClientId(clientId);
         client.setEnabled(true);
-        client.setProtocol(protocol);
-        
-        client.setDirectAccessGrantsEnabled(true);
-        client.setFullScopeAllowed(true);
-        client.setPublicClient(true);
-        client.setStandardFlowEnabled(true);
-        
-        if (protocol.equals(SAML)) {
-            client.setAttributes(getSAMLAttributes());
+        client.setConsentRequired(false);
+        return client;
+    }
+
+    public static ClientRepresentation createOidcClientRep(OidcAccessType accessType, String clientId, String... redirectUris) {
+        ClientRepresentation client = createClientRep(clientId);
+
+        client.setProtocol(OIDC);
+
+        switch (accessType) {
+            case BEARER_ONLY:
+                client.setBearerOnly(true);
+                break;
+            case PUBLIC:
+                client.setBearerOnly(false);
+                client.setPublicClient(true);
+                client.setStandardFlowEnabled(true);
+                client.setImplicitFlowEnabled(false);
+                client.setDirectAccessGrantsEnabled(true);
+                setRedirectUris(client, redirectUris);
+                break;
+            case CONFIDENTIAL:
+                client.setBearerOnly(false);
+                client.setPublicClient(false);
+                client.setStandardFlowEnabled(true);
+                client.setDirectAccessGrantsEnabled(true);
+                client.setServiceAccountsEnabled(true);
+                setRedirectUris(client, redirectUris);
+                break;
         }
         return client;
     }
 
-    public static Map<String, String> getSAMLAttributes() {
-        Map<String, String> attributes = new HashMap<>();
-        attributes.put(SAML_CLIENT_SIGNATURE, "true");
-        attributes.put(SAML_AUTHNSTATEMENT, "true");
-        attributes.put(SAML_FORCE_POST_BINDING, "true");
-        attributes.put(SAML_SERVER_SIGNATURE, "true");
-        attributes.put(SAML_SIGNATURE_ALGORITHM, "RSA_SHA256");
-        attributes.put(SAML_FORCE_NAME_ID_FORMAT, "false");
-        attributes.put(SAML_NAME_ID_FORMAT, "username");
-        return attributes;
+    public static ClientRepresentation createSamlClientRep(String clinetId) {
+        ClientRepresentation client = createClientRep(clinetId);
+
+        client.setProtocol(SAML);
+
+        client.setFrontchannelLogout(true);
+        client.setAttributes(getSAMLAttributes());
+
+        return client;
+    }
+
+    private static void setRedirectUris(ClientRepresentation client, String... redirectUris) {
+        List<String> redirectUrisList = new ArrayList<>();
+        redirectUrisList.addAll(Arrays.asList(redirectUris));
+        client.setRedirectUris(redirectUrisList);
+    }
+
+    protected static void setExpectedWebOrigins(ClientRepresentation client) {
+        List<String> webOrigins = new ArrayList<>();
+        for (String redirectUri : client.getRedirectUris()) {
+            //parse webOrigin from redirectUri: take substring from index 0 to 
+            //first occurence of "/", excluded "http://" by starting search on index 7
+            webOrigins.add(redirectUri.substring(0, redirectUri.indexOf("/", 7)));
+        }
+        client.setWebOrigins(webOrigins);
     }
 
     public ClientRepresentation findClientByClientId(String clientId) {
@@ -112,12 +172,16 @@ public abstract class AbstractClientTest extends AbstractConsoleTest {
 
         if (c1.getProtocol().equals(OIDC)) {
             assertEqualsBooleanAttributes(c1.isBearerOnly(), c2.isBearerOnly());
-            assertEqualsBooleanAttributes(c1.isDirectAccessGrantsEnabled(), c2.isDirectAccessGrantsEnabled());
-            assertEqualsBooleanAttributes(c1.isPublicClient(), c2.isPublicClient());
-            assertEqualsListAttributes(c1.getWebOrigins(), c2.getWebOrigins());
-            assertEqualsStringAttributes(c1.getAdminUrl(), c2.getAdminUrl());
+            if (!c1.isBearerOnly()) {
+                assertEqualsBooleanAttributes(c1.isDirectAccessGrantsEnabled(), c2.isDirectAccessGrantsEnabled());
+                assertEqualsBooleanAttributes(c1.isPublicClient(), c2.isPublicClient());
+                assertEqualsListAttributes(c1.getWebOrigins(), c2.getWebOrigins());
+                assertEqualsStringAttributes(c1.getAdminUrl(), c2.getAdminUrl());
+            }
             assertEqualsBooleanAttributes(c1.isSurrogateAuthRequired(), c2.isSurrogateAuthRequired());
             assertEqualsBooleanAttributes(c1.isServiceAccountsEnabled(), c2.isServiceAccountsEnabled());
+        } else if (c1.getProtocol().equals(SAML)) {
+            assertEqualsBooleanAttributes(c1.isFrontchannelLogout(), c2.isFrontchannelLogout());
         }
     }
 
@@ -127,6 +191,26 @@ public abstract class AbstractClientTest extends AbstractConsoleTest {
         }
     }
 
+    protected static Map<String, String> getSAMLAttributes() {
+        Map<String, String> attributes = new HashMap<>();
+        attributes.put(SAML_ASSERTION_SIGNATURE, "true");
+        attributes.put(SAML_AUTHNSTATEMENT, "false");
+        attributes.put(SAML_CLIENT_SIGNATURE, "true");
+        attributes.put(SAML_ENCRYPT, "true");
+        attributes.put(SAML_FORCE_POST_BINDING, "true");
+        attributes.put(SAML_MULTIVALUED_ROLES, "false");
+        attributes.put(SAML_SERVER_SIGNATURE, "true");
+        attributes.put(SAML_SIGNATURE_ALGORITHM, "RSA_SHA512");
+        attributes.put(SAML_ASSERTION_CONSUMER_URL_POST, "http://example0.test");
+        attributes.put(SAML_ASSERTION_CONSUMER_URL_REDIRECT, "http://example1.test");
+        attributes.put(SAML_FORCE_NAME_ID_FORMAT, "true");
+        attributes.put(SAML_NAME_ID_FORMAT, "email");
+        attributes.put(SAML_SIGNATURE_CANONICALIZATION_METHOD, "http://www.w3.org/2001/10/xml-exc-c14n#WithComments");
+        attributes.put(SAML_SINGLE_LOGOUT_SERVICE_URL_POST, "http://example2.test");
+        attributes.put(SAML_SINGLE_LOGOUT_SERVICE_URL_REDIRECT, "http://example3.test");
+        return attributes;
+    }
+
     public ProtocolMapperRepresentation findClientMapperByName(String clientId, String mapperName) {
         ProtocolMapperRepresentation found = null;
         for (ProtocolMapperRepresentation mapper : testRealmResource().clients().get(clientId).getProtocolMappers().getMappers()) {
@@ -145,4 +229,4 @@ public abstract class AbstractClientTest extends AbstractConsoleTest {
         return clientsResource().get(id);
     }
 
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientClusteringTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientClusteringTest.java
index d0c6743..c2f8eec 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientClusteringTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientClusteringTest.java
@@ -26,7 +26,8 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.keycloak.representations.idm.ClientRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
+import static org.keycloak.testsuite.console.clients.AbstractClientTest.createOidcClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.clustering.ClientClustering;
 
 /**
@@ -43,7 +44,7 @@ public class ClientClusteringTest extends AbstractClientTest {
     
     @Before
     public void before() {
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         found = findClientByClientId(TEST_CLIENT_ID);
@@ -94,4 +95,4 @@ public class ClientClusteringTest extends AbstractClientTest {
         clientClusteringPage.form().addNode("");
         assertAlertDanger();
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientCredentialsTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientCredentialsTest.java
index d489f4e..4030231 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientCredentialsTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientCredentialsTest.java
@@ -26,7 +26,8 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.keycloak.representations.idm.ClientRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
+import static org.keycloak.testsuite.console.clients.AbstractClientTest.createOidcClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.credentials.ClientCredentials;
 import org.keycloak.testsuite.console.page.clients.credentials.ClientCredentialsGeneratePrivateKeys;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
@@ -46,7 +47,7 @@ public class ClientCredentialsTest extends AbstractClientTest {
     
     @Before
     public void before() {
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         ClientRepresentation found = findClientByClientId(TEST_CLIENT_ID);
@@ -82,4 +83,4 @@ public class ClientCredentialsTest extends AbstractClientTest {
 //        generatePrivateKeysPage.generateForm().setStorePassword("pass2");
 //        assertAlertSuccess();//fails with phantomjs
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientInstallationTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientInstallationTest.java
index 0af4bf4..bf7bb06 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientInstallationTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientInstallationTest.java
@@ -26,8 +26,9 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.keycloak.representations.idm.ClientRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
+import static org.keycloak.testsuite.console.clients.AbstractClientTest.createOidcClientRep;
 import org.keycloak.testsuite.console.page.clients.installation.ClientInstallation;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 
 /**
  *
@@ -43,7 +44,7 @@ public class ClientInstallationTest extends AbstractClientTest {
     
     @Before
     public void before() {
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         found = findClientByClientId(TEST_CLIENT_ID);
@@ -63,4 +64,4 @@ public class ClientInstallationTest extends AbstractClientTest {
         clientInstallationPage.form().setConfigFormat("Keycloak OIDC JBoss Subsystem XML");
         assertTrue(clientInstallationPage.form().getTextareaContent().contains("<realm>test</realm>"));
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersOIDCTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersOIDCTest.java
index 850bb39..084f317 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersOIDCTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersOIDCTest.java
@@ -31,8 +31,7 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.ProtocolMapperRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
-import static org.keycloak.testsuite.console.clients.AbstractClientTest.createClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.mappers.ClientMapper;
 import org.keycloak.testsuite.console.page.clients.mappers.ClientMappers;
 import org.keycloak.testsuite.console.page.clients.mappers.CreateClientMappers;
@@ -56,7 +55,7 @@ public class ClientMappersOIDCTest extends AbstractClientTest {
     
     @Before
     public void beforeClientMappersTest() {
-        ClientRepresentation newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        ClientRepresentation newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         id = findClientByClientId(TEST_CLIENT_ID).getId();
@@ -376,4 +375,4 @@ public class ClientMappersOIDCTest extends AbstractClientTest {
         createClientMappersPage.form().save();
         assertAlertDanger();
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersSAMLTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersSAMLTest.java
index c822c23..7905bbd 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersSAMLTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientMappersSAMLTest.java
@@ -29,8 +29,6 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.ProtocolMapperRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.SAML;
-import static org.keycloak.testsuite.console.clients.AbstractClientTest.createClientRep;
 import org.keycloak.testsuite.console.page.clients.mappers.ClientMapper;
 import org.keycloak.testsuite.console.page.clients.mappers.ClientMappers;
 import org.keycloak.testsuite.console.page.clients.mappers.CreateClientMappers;
@@ -54,7 +52,7 @@ public class ClientMappersSAMLTest extends AbstractClientTest {
     
     @Before
     public void beforeClientMappersTest() {
-        ClientRepresentation newClient = createClientRep(TEST_CLIENT_ID, SAML);
+        ClientRepresentation newClient = createSamlClientRep(TEST_CLIENT_ID);
         testRealmResource().clients().create(newClient).close();
         
         id = findClientByClientId(TEST_CLIENT_ID).getId();
@@ -211,4 +209,4 @@ public class ClientMappersSAMLTest extends AbstractClientTest {
         assertEquals(1, config.size());
         assertEquals("offline_access", config.get("role"));
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java
index 64304d0..92d144c 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientRolesTest.java
@@ -9,8 +9,7 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.RoleRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
-import static org.keycloak.testsuite.console.clients.AbstractClientTest.createClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.roles.ClientRole;
 import org.keycloak.testsuite.console.page.clients.roles.ClientRoles;
 import org.keycloak.testsuite.console.page.clients.roles.CreateClientRole;
@@ -40,7 +39,7 @@ public class ClientRolesTest extends AbstractClientTest {
 
     @Before
     public void beforeClientRolesTest() {
-        ClientRepresentation newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        ClientRepresentation newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         id = findClientByClientId(TEST_CLIENT_ID).getId();
@@ -296,4 +295,4 @@ public class ClientRolesTest extends AbstractClientTest {
 //        assertTrue(flashMessage.getText(), flashMessage.isSuccess());
 //        assertNull(clients.findClient(newClient.getClientId()));
 //    }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientScopeTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientScopeTest.java
index 69509f2..da68ca3 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientScopeTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientScopeTest.java
@@ -26,13 +26,13 @@ import java.util.Map;
 import org.jboss.arquillian.graphene.page.Page;
 import static org.junit.Assert.*;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.keycloak.representations.idm.ClientMappingsRepresentation;
 import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.MappingsRepresentation;
 import org.keycloak.representations.idm.RoleRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
+import static org.keycloak.testsuite.console.clients.AbstractClientTest.createOidcClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.scope.ClientScope;
 
 /**
@@ -49,7 +49,7 @@ public class ClientScopeTest extends AbstractClientTest {
     
     @Before
     public void before() {
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         found = findClientByClientId(TEST_CLIENT_ID);
@@ -59,7 +59,6 @@ public class ClientScopeTest extends AbstractClientTest {
     }
     
     @Test
-    @Ignore //phantomjs sometimes doens't enable "Add Selected >>" button when role is selected
     public void clientScopeTest() {
         assertTrue(found.isFullScopeAllowed());
         clientScopePage.scopeForm().setFullScopeAllowed(false);
@@ -70,11 +69,11 @@ public class ClientScopeTest extends AbstractClientTest {
         assertNull(getAllMappingsRepresentation().getRealmMappings());
         assertNull(getAllMappingsRepresentation().getClientMappings());
         
-        clientScopePage.roleForm().addRealmRole("offline_access");//fails with phantomjs
+        clientScopePage.roleForm().addRealmRole("offline_access");
         assertAlertSuccess();
         
         clientScopePage.roleForm().selectClientRole("account");
-        clientScopePage.roleForm().addClientRole("view-profile");//fails with phantomjs
+        clientScopePage.roleForm().addClientRole("view-profile");
         assertAlertSuccess();
         
         found = findClientByClientId(TEST_CLIENT_ID);
@@ -85,16 +84,16 @@ public class ClientScopeTest extends AbstractClientTest {
         assertEquals(1, clientMappings.size());
         assertEquals("view-profile", clientMappings.get("account").getMappings().get(0).getName());
         
-        clientScopePage.roleForm().removeAssignedRole("offline_access");
-        assertAlertSuccess();//fails with phantomjs
-        clientScopePage.roleForm().removeAssignedClientRole("view-profile");
-        assertAlertSuccess();//fails with phantomjs
-        
-        assertNull(getAllMappingsRepresentation().getRealmMappings());
-        assertNull(getAllMappingsRepresentation().getClientMappings());
+//        clientScopePage.roleForm().removeAssignedRole("offline_access");
+//        assertAlertSuccess();//fails with phantomjs
+//        clientScopePage.roleForm().removeAssignedClientRole("view-profile");
+//        assertAlertSuccess();//fails with phantomjs
+//        
+//        assertNull(getAllMappingsRepresentation().getRealmMappings());
+//        assertNull(getAllMappingsRepresentation().getClientMappings());
     }
     
     private MappingsRepresentation getAllMappingsRepresentation() {
         return testRealmResource().clients().get(found.getId()).getScopeMappings().getAll();
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
index 8090475..557a2db 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientSettingsTest.java
@@ -18,9 +18,7 @@
 package org.keycloak.testsuite.console.clients;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import javax.ws.rs.core.Response;
 import org.jboss.arquillian.graphene.page.Page;
 import static org.junit.Assert.*;
@@ -28,12 +26,8 @@ import org.junit.Test;
 
 import org.keycloak.representations.idm.ClientRepresentation;
 import static org.keycloak.testsuite.admin.ApiUtil.getCreatedId;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
-import static org.keycloak.testsuite.auth.page.login.Login.SAML;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.*;
 import org.keycloak.testsuite.console.page.clients.settings.ClientSettings;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.OidcAccessType.BEARER_ONLY;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.OidcAccessType.CONFIDENTIAL;
-import static org.keycloak.testsuite.console.page.clients.settings.ClientSettingsForm.SAMLClientSettingsForm.*;
 import static org.keycloak.testsuite.util.WaitUtils.pause;
 import org.keycloak.testsuite.util.Timer;
 
@@ -51,17 +45,20 @@ public class ClientSettingsTest extends AbstractClientTest {
     private ClientRepresentation newClient;
 
     @Test
-    public void crudOIDCPublic() {
-        newClient = createClientRep("oidc-public", OIDC);
+    public void crudOIDCConfidential() {
+        newClient = createOidcClientRep(CONFIDENTIAL, "oidc-confidential", TEST_REDIRECT_URIS);
         createClient(newClient);
+        assertAlertSuccess();
 
+        //setExpectedWebOrigins(newClient);
+        
         // read & verify
         ClientRepresentation found = findClientByClientId(newClient.getClientId());
         assertNotNull("Client " + newClient.getClientId() + " was not found.", found);
         assertClientSettingsEqual(newClient, found);
         
         // update & verify
-        newClient.setClientId("oidc-public-updated");
+        newClient.setClientId("oidc-confidential-updated");
         newClient.setName("updatedName");
         
         List<String> redirectUris = new ArrayList<>();
@@ -76,7 +73,7 @@ public class ClientSettingsTest extends AbstractClientTest {
         webOrigins.add("http://example3.test");
         newClient.setWebOrigins(webOrigins);
         
-        clientSettingsPage.form().setClientId("oidc-public-updated");
+        clientSettingsPage.form().setClientId("oidc-confidential-updated");
         clientSettingsPage.form().setName("updatedName");
         clientSettingsPage.form().setRedirectUris(redirectUris);
         clientSettingsPage.form().setWebOrigins(webOrigins);
@@ -95,43 +92,36 @@ public class ClientSettingsTest extends AbstractClientTest {
     }
 
     @Test
-    public void createOIDCConfidential() {
-        newClient = createClientRep("oidc-confidetial", OIDC);
+    public void createOIDCPublic() {
+        newClient = createOidcClientRep(PUBLIC, "oidc-public", TEST_REDIRECT_URIS);
         createClient(newClient);
-        
-        newClient.setRedirectUris(TEST_REDIRECT_URIs);
-        newClient.setPublicClient(false);
-        
-        clientSettingsPage.form().setAccessType(CONFIDENTIAL);
-        clientSettingsPage.form().setRedirectUris(TEST_REDIRECT_URIs);
-        clientSettingsPage.form().save();
+        assertAlertSuccess();
 
+        //setExpectedWebOrigins(newClient);
+        
         ClientRepresentation found = findClientByClientId(newClient.getClientId());
         assertNotNull("Client " + newClient.getClientId() + " was not found.", found);
         assertClientSettingsEqual(newClient, found);
     }
     
     @Test
-    public void saveOIDCConfidentialWithoutRedirectURIs() {
-        newClient = createClientRep("oidc-confidential", OIDC);
+    public void createOIDCPublicWithoutRedirectURIs() {
+        newClient = createOidcClientRep(PUBLIC, "oidc-public");
+        newClient.setStandardFlowEnabled(false);
         createClient(newClient);
+        assertAlertSuccess();
 
-        clientSettingsPage.form().setName("name");
-        clientSettingsPage.form().save();
-        assertAlertDanger();
+        ClientRepresentation found = findClientByClientId(newClient.getClientId());
+        assertNotNull("Client " + newClient.getClientId() + " was not found.", found);
+        assertClientSettingsEqual(newClient, found);
     }
 
     @Test
     public void createOIDCBearerOnly() {
-        newClient = createClientRep("oidc-bearer-only", OIDC);
+        newClient = createOidcClientRep(BEARER_ONLY, "oidc-bearer-only");
         createClient(newClient);
+        assertAlertSuccess();
 
-        clientSettingsPage.form().setAccessType(BEARER_ONLY);
-        clientSettingsPage.form().save();
-        
-        newClient.setBearerOnly(true);
-        newClient.setPublicClient(false);
-        
         ClientRepresentation found = findClientByClientId(newClient.getClientId());
         assertNotNull("Client " + newClient.getClientId() + " was not found.", found);
         assertClientSettingsEqual(newClient, found);
@@ -139,10 +129,12 @@ public class ClientSettingsTest extends AbstractClientTest {
 
     @Test
     public void createSAML() {
-        newClient = createClientRep("saml", SAML);
+        newClient = createSamlClientRep("saml");
         createClient(newClient);
+        assertAlertSuccess();
 
         ClientRepresentation found = findClientByClientId(newClient.getClientId());
+        System.out.println("...." + found.isFrontchannelLogout());
         assertNotNull("Client " + newClient.getClientId() + " was not found.", found);
         assertClientSettingsEqual(newClient, found);
         assertClientSamlAttributes(getSAMLAttributes(), found.getAttributes());
@@ -153,22 +145,27 @@ public class ClientSettingsTest extends AbstractClientTest {
         clientsPage.table().createClient();
         createClientPage.form().save();
         assertAlertDanger();
-        
-        clientsPage.navigateTo();
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
-        createClient(newClient);
-        
-        clientsPage.navigateTo();
-        clientsPage.table().createClient();
-        createClientPage.form().setClientId(TEST_CLIENT_ID);
-        createClientPage.form().save();
-        assertAlertDanger();
+    }
+
+//    @Test
+    public void createInconsistentClient() {
+        ClientRepresentation c = createOidcClientRep(CONFIDENTIAL, "inconsistent_client");
+        c.setPublicClient(true);
+        c.setBearerOnly(true);
+
+        Response r = clientsResource().create(c);
+        r.close();
+        clientSettingsPage.setId(getCreatedId(r));
+
+        c = clientResource(clientSettingsPage.getId()).toRepresentation();
+        assertTrue(c.isBearerOnly());
+        assertTrue(c.isPublicClient());
     }
 
     public void createClients(String clientIdPrefix, int count) {
         for (int i = 0; i < count; i++) {
             String clientId = String.format("%s%02d", clientIdPrefix, i);
-            ClientRepresentation cr = createClientRep(clientId, OIDC);
+            ClientRepresentation cr = createOidcClientRep(CONFIDENTIAL, clientId, "http://example.test/*");
             Timer.DEFAULT.reset();
             Response r = testRealmResource().clients().create(cr);
             r.close();
@@ -185,11 +182,11 @@ public class ClientSettingsTest extends AbstractClientTest {
 
     @Test
     public void disabledClient() {
-        newClient = createClientRep("disabled-client", OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, "disabled-client");
         newClient.setEnabled(false);
         createClient(newClient);
 
         ClientRepresentation clientRepre = findClientByClientId("disabled-client");
         assertTrue("Client should be disabled", clientRepre.isEnabled());
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientsTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientsTest.java
index c45e40f..d9e64a7 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientsTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/clients/ClientsTest.java
@@ -26,11 +26,9 @@ import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.keycloak.representations.idm.ClientRepresentation;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
-import static org.keycloak.testsuite.console.clients.AbstractClientTest.createClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 import org.keycloak.testsuite.console.page.clients.settings.ClientSettings;
 import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
-import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlEquals;
 
 /**
  *
@@ -45,7 +43,7 @@ public class ClientsTest extends AbstractClientTest {
     
     @Before
     public void beforeClientsTest() {
-        newClient = createClientRep(TEST_CLIENT_ID, OIDC);
+        newClient = createOidcClientRep(CONFIDENTIAL, TEST_CLIENT_ID, TEST_REDIRECT_URIS);
         testRealmResource().clients().create(newClient).close();
         
         ClientRepresentation found = findClientByClientId(TEST_CLIENT_ID);
@@ -73,4 +71,4 @@ public class ClientsTest extends AbstractClientTest {
         ClientRepresentation found = findClientByClientId(TEST_CLIENT_ID);
         assertNull("Deleted client " + TEST_CLIENT_ID + " was found.", found);
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/events/AdminEventsTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/events/AdminEventsTest.java
index 5990102..ddbaa8c 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/events/AdminEventsTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/events/AdminEventsTest.java
@@ -1,24 +1,3 @@
-/*
- * 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.
- */
 package org.keycloak.testsuite.console.events;
 
 import org.jboss.arquillian.graphene.page.Page;
@@ -28,6 +7,7 @@ import org.keycloak.representations.idm.ClientRepresentation;
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.keycloak.testsuite.admin.ApiUtil;
 import org.keycloak.testsuite.console.AbstractConsoleTest;
+import org.keycloak.testsuite.console.clients.AbstractClientTest;
 import org.keycloak.testsuite.console.page.clients.Clients;
 import org.keycloak.testsuite.console.page.events.AdminEvents;
 import org.keycloak.testsuite.console.page.events.Config;
@@ -39,8 +19,7 @@ import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 import org.keycloak.admin.client.resource.ClientsResource;
-import static org.keycloak.testsuite.auth.page.login.Login.OIDC;
-import static org.keycloak.testsuite.console.clients.AbstractClientTest.createClientRep;
+import static org.keycloak.testsuite.console.page.clients.CreateClientForm.OidcAccessType.CONFIDENTIAL;
 
 
 /**
@@ -71,7 +50,7 @@ public class AdminEventsTest extends AbstractConsoleTest {
 
     @Test
     public void clientsAdminEventsTest() {
-        newClient = createClientRep("test_client", OIDC);
+        newClient = AbstractClientTest.createOidcClientRep(CONFIDENTIAL, "test_client", "http://example.test/test_client/*");
         Response response = clientsResource().create(newClient);
         String id = ApiUtil.getCreatedId(response);
         response.close();
@@ -111,4 +90,4 @@ public class AdminEventsTest extends AbstractConsoleTest {
     public ClientsResource clientsResource() {
         return testRealmResource().clients();
     }
-}
\ No newline at end of file
+}
diff --git a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/federation/LdapUserFederationTest.java b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/federation/LdapUserFederationTest.java
index fa57cdf..d0d2a27 100644
--- a/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/federation/LdapUserFederationTest.java
+++ b/testsuite/integration-arquillian/tests/other/console/src/test/java/org/keycloak/testsuite/console/federation/LdapUserFederationTest.java
@@ -133,7 +133,7 @@ public class LdapUserFederationTest extends AbstractConsoleTest {
     @Test
     public void testConnection() throws Exception {
         createLdapUserProvider.navigateTo();
-        createLdapUserProvider.form().selectVendor(1);
+        createLdapUserProvider.form().selectVendor("Other");
         createLdapUserProvider.form().setConsoleDisplayNameInput("ldap");
         createLdapUserProvider.form().selectEditMode(WRITABLE);
         createLdapUserProvider.form().setLdapConnectionUrlInput("ldap://localhost:10389");
diff --git a/testsuite/integration-arquillian/tests/other/console_no_users/pom.xml b/testsuite/integration-arquillian/tests/other/console_no_users/pom.xml
index dc595c7..e45dfae 100644
--- a/testsuite/integration-arquillian/tests/other/console_no_users/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/console_no_users/pom.xml
@@ -34,7 +34,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
diff --git a/testsuite/integration-arquillian/tests/other/jpa-performance/src/test/java/org/keycloak/testsuite/user/ManyUsersTest.java b/testsuite/integration-arquillian/tests/other/jpa-performance/src/test/java/org/keycloak/testsuite/user/ManyUsersTest.java
index f882879..914f748 100644
--- a/testsuite/integration-arquillian/tests/other/jpa-performance/src/test/java/org/keycloak/testsuite/user/ManyUsersTest.java
+++ b/testsuite/integration-arquillian/tests/other/jpa-performance/src/test/java/org/keycloak/testsuite/user/ManyUsersTest.java
@@ -66,7 +66,9 @@ public class ManyUsersTest extends AbstractUserTest {
         }
 
         realmTimer.reset("create realm before test");
-        createRealm(REALM);
+        RealmRepresentation realm = new RealmRepresentation();
+        realm.setRealm(REALM);
+        realmsResouce().create(realm);
 
         refreshToken();
     }
diff --git a/testsuite/integration-arquillian/tests/other/pom.xml b/testsuite/integration-arquillian/tests/other/pom.xml
index 029d3ae..4353626 100644
--- a/testsuite/integration-arquillian/tests/other/pom.xml
+++ b/testsuite/integration-arquillian/tests/other/pom.xml
@@ -44,7 +44,6 @@
         <pluginManagement>
             <plugins>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-dependency-plugin</artifactId>
                     <executions>
                         <execution>
@@ -68,7 +67,6 @@
                     </executions>
                 </plugin> 
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
                     <executions>
                         <execution>
@@ -78,7 +76,7 @@
                                 <goal>copy-resources</goal>
                             </goals>
                             <configuration>
-                                <outputDirectory>${jboss.server.config.dir}</outputDirectory>
+                                <outputDirectory>${auth.server.config.dir}</outputDirectory>
                                 <resources>
                                     <resource>
                                         <directory>${project.build.directory}/dependency</directory>
@@ -92,15 +90,6 @@
                         </execution>
                     </executions>
                 </plugin>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <configuration>
-                        <systemPropertyVariables>
-                            <arquillian.xml>${project.build.directory}/dependency/arquillian.xml</arquillian.xml>
-                        </systemPropertyVariables>
-                    </configuration>
-                </plugin>
             </plugins>
         </pluginManagement>
     </build>
diff --git a/testsuite/integration-arquillian/tests/pom.xml b/testsuite/integration-arquillian/tests/pom.xml
index 9c82a30..7fd15a5 100644
--- a/testsuite/integration-arquillian/tests/pom.xml
+++ b/testsuite/integration-arquillian/tests/pom.xml
@@ -33,125 +33,81 @@
 
     <name>Tests</name>
     
-    <description></description>
-    
     <modules>
         <module>base</module>
         <module>other</module>
     </modules>
     
     <properties>
-        <containers.home>${project.build.directory}/containers</containers.home>
-        <examples.home>${project.build.directory}/examples</examples.home>
-        <jboss.server.config.dir>${project.build.directory}/undertow-configuration</jboss.server.config.dir>
+        <auth.server>undertow</auth.server>
+        <auth.server.undertow>true</auth.server.undertow>
 
-        <auth.server.container>auth-server-undertow</auth.server.container>
+        <auth.server.container>auth-server-${auth.server}</auth.server.container>
+        <auth.server.home>${containers.home}/${auth.server.container}</auth.server.home>
+        <auth.server.config.dir>${auth.server.home}</auth.server.config.dir>
+        
         <auth.server.port.offset>100</auth.server.port.offset>
         <auth.server.http.port>8180</auth.server.http.port>
         <auth.server.https.port>8543</auth.server.https.port>
         <auth.server.management.port>10090</auth.server.management.port>
         <auth.server.management.port.jmx>10099</auth.server.management.port.jmx>
         <auth.server.ssl.required>false</auth.server.ssl.required>
-        <startup.timeout.sec>60</startup.timeout.sec>
+        <auth.server.jboss.startup.timeout>60</auth.server.jboss.startup.timeout>
+        <auth.server.memory.settings>-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m</auth.server.memory.settings>
+                
+        <auth.server.jboss.artifactId>integration-arquillian-servers-auth-server-${auth.server}</auth.server.jboss.artifactId>
+        <auth.server.jboss.skip.unpack>${auth.server.undertow}</auth.server.jboss.skip.unpack>
+        <auth.server.jboss.startup.timeout>300</auth.server.jboss.startup.timeout>
         
+        <adapter.test.props/>
+        <examples.home>${project.build.directory}/examples</examples.home>
+                
         <browser>phantomjs</browser>
         <firefox_binary>/usr/bin/firefox</firefox_binary>
 
-        <arquillian-core.version>1.1.11.Final</arquillian-core.version>
-        <selenium.version>2.52.0</selenium.version>
-        <arquillian-drone.version>2.0.0.Beta1</arquillian-drone.version>
-        <arquillian-graphene.version>2.1.0.Alpha3</arquillian-graphene.version>
-        <arquillian-wildfly-container.version>8.2.0.Final</arquillian-wildfly-container.version>
-        <version.shrinkwrap.resolvers>2.2.2</version.shrinkwrap.resolvers>
-        
         <frontend.console.output>true</frontend.console.output>
         <backends.console.output>true</backends.console.output>
-        
-        <auth.server.java.home>${java.home}</auth.server.java.home>
-
-        <testsuite.constants>test-constants.properties</testsuite.constants>
-        
     </properties>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.jboss.arquillian.selenium</groupId>
-                <artifactId>selenium-bom</artifactId>
-                <version>${selenium.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.arquillian</groupId>
-                <artifactId>arquillian-bom</artifactId>
-                <version>${arquillian-core.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.arquillian.extension</groupId>
-                <artifactId>arquillian-drone-bom</artifactId>
-                <version>${arquillian-drone.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.wildfly</groupId>
-                <artifactId>wildfly-arquillian-container-managed</artifactId>
-                <version>${arquillian-wildfly-container.version}</version>
-            </dependency>        
-        </dependencies>
-    </dependencyManagement>
-    
     <build>
         <pluginManagement>
             <plugins>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <configuration>
-                        <systemPropertyVariables>
-                            <project.build.directory>${project.build.directory}</project.build.directory>
-                            <browser>${browser}</browser>
-                            <firefox_binary>${firefox_binary}</firefox_binary>
-                            <shouldDeploy>false</shouldDeploy>
-                            <auth.server.container>${auth.server.container}</auth.server.container>
-                            <auth.server.undertow>true</auth.server.undertow>
-                            <auth.server.port.offset>${auth.server.port.offset}</auth.server.port.offset>
-                            <auth.server.http.port>${auth.server.http.port}</auth.server.http.port>
-                            <auth.server.https.port>${auth.server.https.port}</auth.server.https.port>
-                            <auth.server.management.port>${auth.server.management.port}</auth.server.management.port>
-                            <auth.server.management.port.jmx>${auth.server.management.port.jmx}</auth.server.management.port.jmx>
-                            <auth.server.ssl.required>${auth.server.ssl.required}</auth.server.ssl.required>
-                            <auth.server.java.home>${auth.server.java.home}</auth.server.java.home>
-                            <startup.timeout.sec>${startup.timeout.sec}</startup.timeout.sec>
-                            <jboss.server.config.dir>${jboss.server.config.dir}</jboss.server.config.dir>
-                            <frontend.console.output>${frontend.console.output}</frontend.console.output>
-                            <backends.console.output>${backend.console.output}</backends.console.output>
-                            <testsuite.constants>${testsuite.constants}</testsuite.constants>
-                        </systemPropertyVariables>
-                        <properties>
-                            <property>
-                                <name>listener</name>
-                                <value>org.keycloak.testsuite.util.TestEventsLogger</value>
-                            </property>
-                        </properties>
-                        <failIfNoTests>false</failIfNoTests>
-                    </configuration>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <executions>
+                        <execution>
+                            <id>unpack-auth-server-jboss</id>
+                            <phase>generate-resources</phase>
+                            <goals>
+                                <goal>unpack</goal>
+                            </goals>
+                            <configuration>
+                                <artifactItems>
+                                    <artifactItem>
+                                        <groupId>org.keycloak.testsuite</groupId>
+                                        <artifactId>${auth.server.jboss.artifactId}</artifactId>
+                                        <version>${project.version}</version>
+                                        <type>zip</type>
+                                    </artifactItem>
+                                </artifactItems>
+                                <outputDirectory>${containers.home}</outputDirectory>
+                                <overWriteIfNewer>true</overWriteIfNewer>
+                                <skip>${auth.server.jboss.skip.unpack}</skip>
+                            </configuration>
+                        </execution>
+                    </executions>
                 </plugin>
                 <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-resources-plugin</artifactId>
                     <executions>
                         <execution>
                             <id>copy-admin-user-json-file</id>
-                            <phase>process-resources</phase>
+                            <phase>generate-resources</phase>
                             <goals>
                                 <goal>copy-resources</goal>
                             </goals>
                             <configuration>
-                                <outputDirectory>${jboss.server.config.dir}</outputDirectory>
+                                <outputDirectory>${auth.server.config.dir}</outputDirectory>
                                 <resources>
                                     <resource>
                                         <directory>src/test/resources</directory>
@@ -165,6 +121,49 @@
                         </execution>
                     </executions>
                 </plugin>
+                <plugin>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <configuration>
+                        <systemPropertyVariables>
+                            <project.build.directory>${project.build.directory}</project.build.directory>
+                            <arquillian.xml>${project.build.directory}/dependency/arquillian.xml</arquillian.xml>
+                            
+                            <auth.server>${auth.server}</auth.server>
+                            <auth.server.container>${auth.server.container}</auth.server.container>
+                            
+                            <auth.server.undertow>${auth.server.undertow}</auth.server.undertow>
+                            <auth.server.jboss>${auth.server.jboss}</auth.server.jboss>
+                            <auth.server.memory.settings>${auth.server.memory.settings}</auth.server.memory.settings>
+                            
+                            <auth.server.home>${auth.server.home}</auth.server.home>
+                            <auth.server.java.home>${auth.server.java.home}</auth.server.java.home>
+
+                            <auth.server.port.offset>${auth.server.port.offset}</auth.server.port.offset>
+                            <auth.server.http.port>${auth.server.http.port}</auth.server.http.port>
+                            <auth.server.https.port>${auth.server.https.port}</auth.server.https.port>
+                            <auth.server.management.port>${auth.server.management.port}</auth.server.management.port>
+                            <auth.server.management.port.jmx>${auth.server.management.port.jmx}</auth.server.management.port.jmx>
+                            <auth.server.ssl.required>${auth.server.ssl.required}</auth.server.ssl.required>
+                            <auth.server.jboss.startup.timeout>${auth.server.jboss.startup.timeout}</auth.server.jboss.startup.timeout>
+                            <auth.server.config.dir>${auth.server.config.dir}</auth.server.config.dir>
+                            <frontend.console.output>${frontend.console.output}</frontend.console.output>
+                            <backends.console.output>${backend.console.output}</backends.console.output>
+                            
+                            <adapter.test.props>${adapter.test.props}</adapter.test.props>
+
+                            <browser>${browser}</browser>
+                            <firefox_binary>${firefox_binary}</firefox_binary>
+
+                        </systemPropertyVariables>
+                        <properties>
+                            <property>
+                                <name>listener</name>
+                                <value>org.keycloak.testsuite.util.TestEventsLogger</value>
+                            </property>
+                        </properties>
+                        <failIfNoTests>false</failIfNoTests>
+                    </configuration>
+                </plugin>
             </plugins>
         </pluginManagement>        
     </build>
@@ -172,57 +171,466 @@
     <profiles>
 
         <profile>
-            <id>no-account</id>
+            <id>auth-server-wildfly</id>
             <properties>
-                <exclude.account>**/account/**/*Test.java</exclude.account>
+                <auth.server>wildfly</auth.server>
+                <auth.server.jboss>true</auth.server.jboss>
+                <auth.server.undertow>false</auth.server.undertow>
+                <auth.server.config.dir>${auth.server.home}/standalone/configuration</auth.server.config.dir>
+                <h2.version>1.3.173</h2.version>
             </properties>
+            <dependencies>
+                <dependency>
+                    <groupId>org.wildfly</groupId>
+                    <artifactId>wildfly-arquillian-container-managed</artifactId>
+                </dependency>
+            </dependencies>
         </profile>
+        
         <profile>
-            <id>no-client</id>
+            <id>auth-server-eap</id>
             <properties>
-                <exclude.client>**/client/**/*Test.java</exclude.client>
+                <auth.server>eap</auth.server>
+                <auth.server.jboss>true</auth.server.jboss>
+                <auth.server.undertow>false</auth.server.undertow>
+                <auth.server.config.dir>${auth.server.home}/standalone/configuration</auth.server.config.dir>
+                <h2.version>1.3.173</h2.version>
             </properties>
+            <dependencies>
+                <dependency>
+                    <groupId>org.wildfly</groupId>
+                    <artifactId>wildfly-arquillian-container-managed</artifactId>
+                </dependency>
+            </dependencies>
         </profile>
+        
         <profile>
-            <id>no-base</id>
+            <id>auth-server-cluster</id>
             <properties>
-                <exclude.account>**/account/**/*Test.java</exclude.account>
-                <exclude.client>**/client/**/*Test.java</exclude.client>
+                <!--disable exclusion pattern for cluster test which is enabled by default in base/pom.xml-->
+                <exclude.cluster>-</exclude.cluster>
+                
+                <auth.server.balancer.home>${containers.home}/auth-server-balancer-wildfly</auth.server.balancer.home>
+                <auth.server.backend1.home>${containers.home}/auth-server-${auth.server}-backend1</auth.server.backend1.home>
+                <auth.server.backend2.home>${containers.home}/auth-server-${auth.server}-backend2</auth.server.backend2.home>
+
+                <auth.server.config.dir>${auth.server.backend1.home}/standalone/configuration</auth.server.config.dir>
             </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <!--requireActiveProfile 'auth-server-wildfly/eap' doesn't work unless the profiles are defined in all submodule poms
+                                        using requireProperty instead-->
+                                        <requireProperty>
+                                            <property>auth.server</property>
+                                            <regex>(wildfly)|(eap)</regex>
+                                            <regexMessage>Profile "auth-server-cluster" requires activation of profile "auth-server-wildfly" or "auth-server-eap".</regexMessage>
+                                        </requireProperty>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                    </plugin>
+                </plugins>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-dependency-plugin</artifactId>
+                            <executions>
+                                <execution>
+                                    <id>unpack-auth-server-load-balancer</id>
+                                    <phase>generate-resources</phase>
+                                    <goals>
+                                        <goal>unpack</goal>
+                                    </goals>
+                                    <configuration>
+                                        <artifactItems>
+                                            <artifactItem>
+                                                <groupId>org.keycloak.testsuite</groupId>
+                                                <artifactId>integration-arquillian-server-wildfly-balancer</artifactId>
+                                                <version>${project.version}</version>
+                                                <type>zip</type>
+                                                <outputDirectory>${auth.server.balancer.home}</outputDirectory>
+                                            </artifactItem>
+                                        </artifactItems>
+                                        <overWriteIfNewer>true</overWriteIfNewer>
+                                    </configuration>
+                                </execution>
+                            </executions>
+                        </plugin>
+                        <plugin>
+                            <artifactId>maven-antrun-plugin</artifactId>
+                            <executions>
+                                <execution>
+                                    <id>copy-auth-server-backend-nodes</id>
+                                    <phase>process-resources</phase>
+                                    <goals>
+                                        <goal>run</goal>
+                                    </goals>
+                                    <configuration>
+                                        <target>
+                                            <move todir="${auth.server.balancer.home}">
+                                                <fileset dir="${auth.server.balancer.home}/balancer-wildfly"/>
+                                            </move>
+                                            <move todir="${auth.server.backend1.home}">
+                                                <fileset dir="${auth.server.home}"/>
+                                            </move>
+                                            <copy todir="${auth.server.backend2.home}">
+                                                <fileset dir="${auth.server.backend1.home}"/>
+                                            </copy>
+                                        </target>
+                                    </configuration>
+                                </execution>
+                            </executions>
+                        </plugin>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <run.h2>true</run.h2>
+
+                                    <auth.server.jboss>false</auth.server.jboss>
+                                    <auth.server.cluster>true</auth.server.cluster>
+                                    
+                                    <auth.server.balancer.home>${auth.server.balancer.home}</auth.server.balancer.home>
+                                    <auth.server.backend1.home>${auth.server.backend1.home}</auth.server.backend1.home>
+                                    <auth.server.backend2.home>${auth.server.backend2.home}</auth.server.backend2.home>
+
+                                    <!--100-->
+                                    <auth.server.backend1.port.offset>101</auth.server.backend1.port.offset>
+                                    <auth.server.backend2.port.offset>102</auth.server.backend2.port.offset>
+                                    <!--8180-->
+                                    <auth.server.backend1.http.port>8181</auth.server.backend1.http.port>
+                                    <auth.server.backend2.http.port>8182</auth.server.backend2.http.port>
+                                    <!--8543-->
+                                    <auth.server.backend1.https.port>8544</auth.server.backend1.https.port>
+                                    <auth.server.backend2.https.port>8545</auth.server.backend2.https.port>
+                                    <!--10090-->
+                                    <auth.server.backend1.management.port>10091</auth.server.backend1.management.port>
+                                    <auth.server.backend2.management.port>10092</auth.server.backend2.management.port>
+                                    <!--10099-->
+                                    <auth.server.backend1.management.port.jmx>10100</auth.server.backend1.management.port.jmx>
+                                    <auth.server.backend2.management.port.jmx>10101</auth.server.backend2.management.port.jmx>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
         </profile>
-                
+
+
         <profile>
-            <id>common-test-dependencies</id>
+            <id>clean-jpa</id>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <groupId>org.liquibase</groupId>
+                            <artifactId>liquibase-maven-plugin</artifactId>
+                            <configuration>
+                                <changeLogFile>META-INF/jpa-changelog-master.xml</changeLogFile>
+
+                                <url>${keycloak.connectionsJpa.url}</url>
+                                <driver>${keycloak.connectionsJpa.driver}</driver>
+                                <username>${keycloak.connectionsJpa.user}</username>
+                                <password>${keycloak.connectionsJpa.password}</password>
+
+                                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
+                                <databaseClass>${keycloak.connectionsJpa.liquibaseDatabaseClass}</databaseClass>
+                            </configuration>
+                            <executions>
+                                <execution>
+                                    <id>clean-jpa</id>
+                                    <phase>clean</phase>
+                                    <goals>
+                                        <goal>dropAll</goal>
+                                    </goals>
+                                </execution>
+                            </executions>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>        
+
+        <!-- Profiles for migration tests-->
+        
+        <profile>
+            <id>migration</id>
             <activation>
-                <file>
-                    <exists>src</exists>
-                    <!--    ^ only activate this profile in submodules that have actual tests -->
-                </file>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                </property>
             </activation>
-            <dependencies>
-                <!-- TEST DEPENDENCIES -->
-                <dependency>
-                    <groupId>junit</groupId>
-                    <artifactId>junit</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>org.jboss.arquillian.junit</groupId>
-                    <artifactId>arquillian-junit-container</artifactId>
-                </dependency>
-
-                <dependency>
-                    <groupId>org.jboss.arquillian.graphene</groupId>
-                    <artifactId>graphene-webdriver</artifactId>
-                    <version>${arquillian-graphene.version}</version>
-                    <type>pom</type>
-                </dependency>
-                <dependency>
-                    <groupId>org.jboss.arquillian.protocol</groupId>
-                    <artifactId>arquillian-protocol-servlet</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>org.jboss.arquillian.extension</groupId>
-                    <artifactId>arquillian-phantom-driver</artifactId>
+            <properties>
+                <!--diable exclusion pattern for migration tests, which is enabled by default in the base/pom.xml-->
+                <exclude.migration>-</exclude.migration>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-enforcer-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>enforce-properties</id>
+                                <goals>
+                                    <goal>enforce</goal>
+                                </goals>
+                                <configuration>
+                                    <rules>
+                                        <requireProperty>
+                                            <property>migrated.auth.server.version</property>
+                                        </requireProperty>
+                                    </rules>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-migrated-auth-server-jboss</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.keycloak.testsuite</groupId>
+                                            <artifactId>${migrated.auth.server.jboss.artifactId}</artifactId>
+                                            <version>${project.version}</version>
+                                            <type>zip</type>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <outputDirectory>${containers.home}</outputDirectory>
+                                    <overWriteIfNewer>true</overWriteIfNewer>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <systemPropertyVariables>
+                                <migrated.auth.server.version>${migrated.auth.server.version}</migrated.auth.server.version>
+                            </systemPropertyVariables>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>        
+        
+        <profile>
+            <id>migration-kc16</id>
+            <activation>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                    <value>1.6.1.Final</value>
+                </property>
+            </activation>
+            <properties>
+                <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc16</migrated.auth.server.jboss.artifactId>
+            </properties>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <auth.server.jboss.kc16>true</auth.server.jboss.kc16>
+                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+                                    <keycloak.migration.file>src/test/resources/migration-test/migration-realm-16.json</keycloak.migration.file>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>migration-kc15</id>
+            <activation>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                    <value>1.5.1.Final</value>
+                </property>
+            </activation>
+            <properties>
+                <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc15</migrated.auth.server.jboss.artifactId>
+            </properties>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <auth.server.jboss.kc15>true</auth.server.jboss.kc15>
+                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+                                    <keycloak.migration.file>src/test/resources/migration-test/migration-realm-15.json</keycloak.migration.file>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>migration-kc14</id>
+            <activation>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                    <value>1.4.0.Final</value>
+                </property>
+            </activation>
+            <properties>
+                <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc14</migrated.auth.server.jboss.artifactId>
+            </properties>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <auth.server.jboss.kc14>true</auth.server.jboss.kc14>
+                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>migration-kc13</id>
+            <activation>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                    <value>1.3.1.Final</value>
+                </property>
+            </activation>
+            <properties>
+                <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc13</migrated.auth.server.jboss.artifactId>
+            </properties>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <auth.server.jboss.kc13>true</auth.server.jboss.kc13>
+                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+        
+        <profile>
+            <id>migration-kc12</id>
+            <activation>
+                <property>
+                    <name>migrated.auth.server.version</name>
+                    <value>1.2.0.Final</value>
+                </property>
+            </activation>
+            <properties>
+                <migrated.auth.server.jboss.artifactId>integration-arquillian-server-wildfly-kc12</migrated.auth.server.jboss.artifactId>
+            </properties>
+            <build>
+                <pluginManagement>
+                    <plugins>
+                        <plugin>
+                            <artifactId>maven-surefire-plugin</artifactId>
+                            <configuration>
+                                <systemPropertyVariables>
+                                    <auth.server.jboss.kc12>true</auth.server.jboss.kc12>
+                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
+                                </systemPropertyVariables>
+                            </configuration>
+                        </plugin>
+                    </plugins>
+                </pluginManagement>
+            </build>
+        </profile>
+
+                
+                                
+                                                
+        <profile>
+            <id>no-account</id>
+            <properties>
+                <exclude.account>**/account/**/*Test.java</exclude.account>
+            </properties>
+        </profile>
+        <profile>
+            <id>no-client</id>
+            <properties>
+                <exclude.client>**/client/**/*Test.java</exclude.client>
+            </properties>
+        </profile>
+        <profile>
+            <id>no-base</id>
+            <properties>
+                <exclude.account>**/account/**/*Test.java</exclude.account>
+                <exclude.client>**/client/**/*Test.java</exclude.client>
+            </properties>
+        </profile>
+                
+        <profile>
+            <id>common-test-dependencies</id>
+            <activation>
+                <file>
+                    <exists>src/test</exists>
+                    <!--    ^ only activate this profile in submodules that have actual tests -->
+                </file>
+            </activation>
+            <dependencies>
+                <!-- TEST DEPENDENCIES -->
+                <dependency>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.jboss.arquillian.junit</groupId>
+                    <artifactId>arquillian-junit-container</artifactId>
+                </dependency>
+
+                <dependency>
+                    <groupId>org.jboss.arquillian.graphene</groupId>
+                    <artifactId>graphene-webdriver</artifactId>
+                    <version>${arquillian-graphene.version}</version>
+                    <type>pom</type>
+                </dependency>
+                <dependency>
+                    <groupId>org.jboss.arquillian.protocol</groupId>
+                    <artifactId>arquillian-protocol-servlet</artifactId>
+                </dependency>
+                <dependency>
+                    <groupId>org.jboss.arquillian.extension</groupId>
+                    <artifactId>arquillian-phantom-driver</artifactId>
                 </dependency>
                 <dependency>
                     <groupId>org.jboss.arquillian.graphene</groupId>
@@ -274,6 +682,12 @@
                     <type>jar</type>
                 </dependency>
         
+                <dependency>
+                    <groupId>com.h2database</groupId>
+                    <artifactId>h2</artifactId>
+                    <scope>compile</scope>
+                </dependency>
+                
                 <!-- Email Test Server -->
                 <dependency>
                     <groupId>com.icegreen</groupId>
@@ -319,10 +733,15 @@
                     <artifactId>keycloak-adapter-spi</artifactId>
                 </dependency>
 
-
-                <!-- Keycloak Server on Undertow -->
+                <!--UNDERTOW-->
 
                 <dependency>
+                    <groupId>org.keycloak.testsuite</groupId>
+                    <artifactId>integration-arquillian-servers-auth-server-undertow</artifactId>
+                    <version>${project.version}</version>
+                </dependency>
+                
+                <dependency>
                     <groupId>org.jboss.arquillian.container</groupId>
                     <artifactId>undertow-embedded</artifactId>
                     <version>1.0.0.Alpha1-SNAPSHOT</version>
@@ -389,11 +808,6 @@
                     <artifactId>hibernate-jpa-2.1-api</artifactId>
                 </dependency>
                 <dependency>
-                    <groupId>com.h2database</groupId>
-                    <artifactId>h2</artifactId>
-                    <scope>compile</scope>
-                </dependency>
-                <dependency>
                     <groupId>org.hibernate</groupId>
                     <artifactId>hibernate-entitymanager</artifactId>
                 </dependency>
@@ -424,16 +838,14 @@
                     <artifactId>postgresql</artifactId>
                     <version>${postgresql.version}</version>
                 </dependency>
-                
+
             </dependencies>
             <build>
                 <plugins>
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-surefire-plugin</artifactId>
                     </plugin>
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-dependency-plugin</artifactId>               
                     </plugin> 
                     <plugin>
@@ -447,629 +859,7 @@
                 </plugins>
             </build>            
         </profile>
-        
-        <profile>
-            <id>clean-jpa</id>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.liquibase</groupId>
-                            <artifactId>liquibase-maven-plugin</artifactId>
-                            <configuration>
-                                <changeLogFile>META-INF/jpa-changelog-master.xml</changeLogFile>
-
-                                <url>${keycloak.connectionsJpa.url}</url>
-                                <driver>${keycloak.connectionsJpa.driver}</driver>
-                                <username>${keycloak.connectionsJpa.user}</username>
-                                <password>${keycloak.connectionsJpa.password}</password>
-
-                                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
-                                <databaseClass>${keycloak.connectionsJpa.liquibaseDatabaseClass}</databaseClass>
-                            </configuration>
-                            <executions>
-                                <execution>
-                                    <id>clean-jpa</id>
-                                    <phase>clean</phase>
-                                    <goals>
-                                        <goal>dropAll</goal>
-                                    </goals>
-                                </execution>
-                            </executions>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>        
-        
-        <profile>
-            <id>auth-server-wildfly</id>
-            <properties>
-                <auth.server.container>auth-server-wildfly</auth.server.container>
-                <startup.timeout.sec>300</startup.timeout.sec>
-                <adapter.test.props/>
-                <keycloak.home>${containers.home}/keycloak-${project.version}</keycloak.home>
-                <jboss.server.config.dir>${keycloak.home}/standalone/configuration</jboss.server.config.dir>
-                <h2.version>1.3.173</h2.version>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.wildfly</groupId>
-                    <artifactId>wildfly-arquillian-container-managed</artifactId>
-                </dependency>
-            </dependencies>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly>true</auth.server.wildfly>
-                                    <auth.server.undertow>false</auth.server.undertow>
-                                    <keycloak.home>${keycloak.home}</keycloak.home>
-                                    <adapter.test.props>${adapter.test.props}</adapter.test.props>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-dependency-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>unpack-auth-server-wildfly</id>
-                                    <phase>generate-test-resources</phase>
-                                    <goals>
-                                        <goal>unpack</goal>
-                                    </goals>
-                                    <configuration>
-                                        <artifactItems>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-wildfly</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                            </artifactItem>
-                                        </artifactItems>
-                                        <outputDirectory>${containers.home}</outputDirectory>
-                                        <overWriteIfNewer>true</overWriteIfNewer>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        
-        <profile>
-            <id>auth-server-wildfly-cluster</id>
-            <properties>
-                <!--disable exclusion pattern for cluster test which is enabled by default in base/pom.xml-->
-                <exclude.cluster>-</exclude.cluster>
-                
-                <auth.server.container>auth-server-wildfly-cluster</auth.server.container>
-                <startup.timeout.sec>300</startup.timeout.sec>
-                <adapter.test.props/>
-                <h2.version>1.3.173</h2.version>
-
-                <keycloak.balancer.home>${containers.home}/balancer/wildfly-balancer-${project.version}</keycloak.balancer.home>
-                <keycloak.backend1.home>${containers.home}/node1/keycloak-${project.version}</keycloak.backend1.home>
-                <keycloak.backend2.home>${containers.home}/node2/keycloak-${project.version}</keycloak.backend2.home>
-
-                <keycloak.home>${keycloak.backend1.home}</keycloak.home>
-                <jboss.server.config.dir>${keycloak.home}/standalone/configuration</jboss.server.config.dir>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.wildfly</groupId>
-                    <artifactId>wildfly-arquillian-container-managed</artifactId>
-                </dependency>
-            </dependencies>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <run.h2>true</run.h2>
-                                    
-                                    <auth.server.wildfly.cluster>true</auth.server.wildfly.cluster>
-                                    <auth.server.undertow>false</auth.server.undertow>
-                                    <adapter.test.props>${adapter.test.props}</adapter.test.props>
-                                    
-                                    <keycloak.balancer.home>${keycloak.balancer.home}</keycloak.balancer.home>
-                                    <keycloak.backend1.home>${keycloak.backend1.home}</keycloak.backend1.home>
-                                    <keycloak.backend2.home>${keycloak.backend2.home}</keycloak.backend2.home>
-
-                                    <!--100-->
-                                    <auth.server.backend1.port.offset>101</auth.server.backend1.port.offset>
-                                    <auth.server.backend2.port.offset>102</auth.server.backend2.port.offset>
-                                    <!--8180-->
-                                    <auth.server.backend1.http.port>8181</auth.server.backend1.http.port>
-                                    <auth.server.backend2.http.port>8182</auth.server.backend2.http.port>
-                                    <!--8543-->
-                                    <auth.server.backend1.https.port>8544</auth.server.backend1.https.port>
-                                    <auth.server.backend2.https.port>8545</auth.server.backend2.https.port>
-                                    <!--10090-->
-                                    <auth.server.backend1.management.port>10091</auth.server.backend1.management.port>
-                                    <auth.server.backend2.management.port>10092</auth.server.backend2.management.port>
-                                    <!--10099-->
-                                    <auth.server.backend1.management.port.jmx>10100</auth.server.backend1.management.port.jmx>
-                                    <auth.server.backend2.management.port.jmx>10101</auth.server.backend2.management.port.jmx>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-dependency-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>unpack-auth-server-wildfly</id>
-                                    <phase>generate-test-resources</phase>
-                                    <goals>
-                                        <goal>unpack</goal>
-                                    </goals>
-                                    <configuration>
-                                        <artifactItems>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-wildfly-balancer</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/balancer</outputDirectory>
-                                            </artifactItem>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-wildfly</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/node1</outputDirectory>
-                                            </artifactItem>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-wildfly</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/node2</outputDirectory>
-                                            </artifactItem>
-                                        </artifactItems>
-                                        <overWriteIfNewer>true</overWriteIfNewer>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-
-
-        <profile>
-            <id>auth-server-eap7</id>
-            <properties>
-                <auth.server.container>auth-server-eap7</auth.server.container>
-                <startup.timeout.sec>300</startup.timeout.sec>
-                <adapter.test.props/>
-                <keycloak.home>${containers.home}/keycloak-${version.server.dist}</keycloak.home>
-                <jboss.server.config.dir>${keycloak.home}/standalone/configuration</jboss.server.config.dir>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.wildfly</groupId>
-                    <artifactId>wildfly-arquillian-container-managed</artifactId>
-                </dependency>
-            </dependencies>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-enforcer-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>enforce-properties</id>
-                                    <goals>
-                                        <goal>enforce</goal>
-                                    </goals>
-                                    <configuration>
-                                        <rules>
-                                            <requireProperty>
-                                                <property>version.server.dist</property>
-                                            </requireProperty>
-                                        </rules>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.eap7>true</auth.server.eap7>
-                                    <auth.server.undertow>false</auth.server.undertow>
-                                    <keycloak.home>${keycloak.home}</keycloak.home>
-                                    <adapter.test.props>${adapter.test.props}</adapter.test.props>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-dependency-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>unpack-auth-server-eap</id>
-                                    <phase>generate-test-resources</phase>
-                                    <goals>
-                                        <goal>unpack</goal>
-                                    </goals>
-                                    <configuration>
-                                        <artifactItems>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-eap7</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                            </artifactItem>
-                                        </artifactItems>
-                                        <outputDirectory>${containers.home}</outputDirectory>
-                                        <overWriteIfNewer>true</overWriteIfNewer>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        <profile>
-            <id>auth-server-eap7-cluster</id>
-            <properties>
-                <!--disable exclusion pattern for cluster test which is enabled by default in base/pom.xml-->
-                <exclude.cluster>-</exclude.cluster>
-                
-                <auth.server.container>auth-server-eap7-cluster</auth.server.container>
-                <startup.timeout.sec>300</startup.timeout.sec>
-                <adapter.test.props/>
-                <h2.version>1.3.173</h2.version>
-
-                <keycloak.balancer.home>${containers.home}/balancer/wildfly-balancer-${project.version}</keycloak.balancer.home>
-                <keycloak.backend1.home>${containers.home}/node1/keycloak-${version.server.dist}</keycloak.backend1.home>
-                <keycloak.backend2.home>${containers.home}/node2/keycloak-${version.server.dist}</keycloak.backend2.home>
-
-                <keycloak.home>${keycloak.backend1.home}</keycloak.home>
-                <jboss.server.config.dir>${keycloak.home}/standalone/configuration</jboss.server.config.dir>
-            </properties>
-            <dependencies>
-                <dependency>
-                    <groupId>org.wildfly</groupId>
-                    <artifactId>wildfly-arquillian-container-managed</artifactId>
-                </dependency>
-            </dependencies>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-enforcer-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>enforce-properties</id>
-                                    <goals>
-                                        <goal>enforce</goal>
-                                    </goals>
-                                    <configuration>
-                                        <rules>
-                                            <requireProperty>
-                                                <property>version.server.dist</property>
-                                            </requireProperty>
-                                        </rules>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <run.h2>true</run.h2>
-                                    
-                                    <auth.server.eap7.cluster>true</auth.server.eap7.cluster>
-                                    <auth.server.undertow>false</auth.server.undertow>
-                                    <adapter.test.props>${adapter.test.props}</adapter.test.props>
-                                    
-                                    <keycloak.balancer.home>${keycloak.balancer.home}</keycloak.balancer.home>
-                                    <keycloak.backend1.home>${keycloak.backend1.home}</keycloak.backend1.home>
-                                    <keycloak.backend2.home>${keycloak.backend2.home}</keycloak.backend2.home>
-
-                                    <!--100-->
-                                    <auth.server.backend1.port.offset>101</auth.server.backend1.port.offset>
-                                    <auth.server.backend2.port.offset>102</auth.server.backend2.port.offset>
-                                    <!--8180-->
-                                    <auth.server.backend1.http.port>8181</auth.server.backend1.http.port>
-                                    <auth.server.backend2.http.port>8182</auth.server.backend2.http.port>
-                                    <!--8543-->
-                                    <auth.server.backend1.https.port>8544</auth.server.backend1.https.port>
-                                    <auth.server.backend2.https.port>8545</auth.server.backend2.https.port>
-                                    <!--10090-->
-                                    <auth.server.backend1.management.port>10091</auth.server.backend1.management.port>
-                                    <auth.server.backend2.management.port>10092</auth.server.backend2.management.port>
-                                    <!--10099-->
-                                    <auth.server.backend1.management.port.jmx>10100</auth.server.backend1.management.port.jmx>
-                                    <auth.server.backend2.management.port.jmx>10101</auth.server.backend2.management.port.jmx>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-dependency-plugin</artifactId>
-                            <executions>
-                                <execution>
-                                    <id>unpack-auth-server-wildfly</id>
-                                    <phase>generate-test-resources</phase>
-                                    <goals>
-                                        <goal>unpack</goal>
-                                    </goals>
-                                    <configuration>
-                                        <artifactItems>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-wildfly-balancer</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/balancer</outputDirectory>
-                                            </artifactItem>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-eap7</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/node1</outputDirectory>
-                                            </artifactItem>
-                                            <artifactItem>
-                                                <groupId>org.keycloak.testsuite</groupId>
-                                                <artifactId>integration-arquillian-server-eap7</artifactId>
-                                                <version>${project.version}</version>
-                                                <type>zip</type>
-                                                <outputDirectory>${containers.home}/node2</outputDirectory>
-                                            </artifactItem>
-                                        </artifactItems>
-                                        <overWriteIfNewer>true</overWriteIfNewer>
-                                    </configuration>
-                                </execution>
-                            </executions>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-
-        <!-- Profiles for migration tests-->
-        
-        <profile>
-            <id>migration</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                </property>
-            </activation>
-            <properties>
-                <!--diable exclusion pattern for migration tests, which is enabled by default in the base/pom.xml-->
-                <exclude.migration>-</exclude.migration>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-enforcer-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>enforce-properties</id>
-                                <goals>
-                                    <goal>enforce</goal>
-                                </goals>
-                                <configuration>
-                                    <rules>
-                                        <requireProperty>
-                                            <property>migrated.auth.server.version</property>
-                                        </requireProperty>
-                                    </rules>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-dependency-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>unpack-migrated-auth-server-wildfly</id>
-                                <phase>generate-test-resources</phase>
-                                <goals>
-                                    <goal>unpack</goal>
-                                </goals>
-                                <configuration>
-                                    <artifactItems>
-                                        <artifactItem>
-                                            <groupId>org.keycloak.testsuite</groupId>
-                                            <artifactId>${migrated.auth.server.artifactId}</artifactId>
-                                            <version>${project.version}</version>
-                                            <type>zip</type>
-                                        </artifactItem>
-                                    </artifactItems>
-                                    <outputDirectory>${containers.home}</outputDirectory>
-                                    <overWriteIfNewer>true</overWriteIfNewer>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <systemPropertyVariables>
-                                <migrated.auth.server.version>${migrated.auth.server.version}</migrated.auth.server.version>
-                            </systemPropertyVariables>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>        
-        
-        <profile>
-            <id>migration-kc16</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                    <value>1.6.1.Final</value>
-                </property>
-            </activation>
-            <properties>
-                <migrated.auth.server.artifactId>integration-arquillian-server-wildfly-kc16</migrated.auth.server.artifactId>
-            </properties>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly.kc16>true</auth.server.wildfly.kc16>
-                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
-                                    <keycloak.migration.file>src/test/resources/migration-test/migration-realm-16.json</keycloak.migration.file>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        <profile>
-            <id>migration-kc15</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                    <value>1.5.1.Final</value>
-                </property>
-            </activation>
-            <properties>
-                <migrated.auth.server.artifactId>integration-arquillian-server-wildfly-kc15</migrated.auth.server.artifactId>
-            </properties>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly.kc15>true</auth.server.wildfly.kc15>
-                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
-                                    <keycloak.migration.file>src/test/resources/migration-test/migration-realm-15.json</keycloak.migration.file>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        <profile>
-            <id>migration-kc14</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                    <value>1.4.0.Final</value>
-                </property>
-            </activation>
-            <properties>
-                <migrated.auth.server.artifactId>integration-arquillian-server-wildfly-kc14</migrated.auth.server.artifactId>
-            </properties>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly.kc14>true</auth.server.wildfly.kc14>
-                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        <profile>
-            <id>migration-kc13</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                    <value>1.3.1.Final</value>
-                </property>
-            </activation>
-            <properties>
-                <migrated.auth.server.artifactId>integration-arquillian-server-wildfly-kc13</migrated.auth.server.artifactId>
-            </properties>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly.kc13>true</auth.server.wildfly.kc13>
-                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-        
-        <profile>
-            <id>migration-kc12</id>
-            <activation>
-                <property>
-                    <name>migrated.auth.server.version</name>
-                    <value>1.2.0.Final</value>
-                </property>
-            </activation>
-            <properties>
-                <migrated.auth.server.artifactId>integration-arquillian-server-wildfly-kc12</migrated.auth.server.artifactId>
-            </properties>
-            <build>
-                <pluginManagement>
-                    <plugins>
-                        <plugin>
-                            <groupId>org.apache.maven.plugins</groupId>
-                            <artifactId>maven-surefire-plugin</artifactId>
-                            <configuration>
-                                <systemPropertyVariables>
-                                    <auth.server.wildfly.kc12>true</auth.server.wildfly.kc12>
-                                    <keycloak.migration.home>${containers.home}/keycloak-${migrated.auth.server.version}</keycloak.migration.home>
-                                </systemPropertyVariables>
-                            </configuration>
-                        </plugin>
-                    </plugins>
-                </pluginManagement>
-            </build>
-        </profile>
-                
+                                                                                
     </profiles>
     
 </project>