keycloak-aplcache

Changes

Details

diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
index 20d5962..d4054c7 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/applications.js
@@ -191,9 +191,7 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, application, 
     });
 
     $scope.$watch('application', function() {
-        console.log('watch application');
         if (!angular.equals($scope.application, application)) {
-            console.log('application changed');
             $scope.changed = true;
         }
     }, true);
@@ -228,7 +226,7 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, application, 
         } else {
             Application.update({
                 realm : realm.realm,
-                id : application.name
+                application : application.name
             }, $scope.application, function() {
                 $scope.changed = false;
                 application = angular.copy($scope.application);
@@ -250,7 +248,7 @@ module.controller('ApplicationDetailCtrl', function($scope, realm, application, 
         Dialog.confirmDelete($scope.application.name, 'application', function() {
             $scope.application.$remove({
                 realm : realm.realm,
-                id : $scope.application.name
+                application : $scope.application.name
             }, function() {
                 $location.url("/realms/" + realm.realm + "/applications");
                 Notifications.success("The application has been deleted.");
@@ -354,25 +352,29 @@ module.controller('ApplicationScopeMappingCtrl', function($scope, $http, realm, 
 
 
     $scope.changeApplication = function() {
-        $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, application : $scope.targetApp.name}, function() {
-                $scope.applicationMappings = ApplicationApplicationScopeMapping.query({realm : realm.realm, application : application.name, targetApp : $scope.targetApp.name}, function(){
-                    for (var i = 0; i < $scope.applicationMappings.length; i++) {
-                        var role = $scope.applicationMappings[i];
-                        for (var j = 0; j < $scope.applicationRoles.length; j++) {
-                            var realmRole = $scope.applicationRoles[j];
-                            if (realmRole.id == role.id) {
-                                var idx = $scope.applicationRoles.indexOf(realmRole);
-                                if (idx != -1) {
-                                    $scope.applicationRoles.splice(idx, 1);
-                                    break;
+        if ($scope.targetApp) {
+            $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, application : $scope.targetApp.name}, function() {
+                    $scope.applicationMappings = ApplicationApplicationScopeMapping.query({realm : realm.realm, application : application.name, targetApp : $scope.targetApp.name}, function(){
+                        for (var i = 0; i < $scope.applicationMappings.length; i++) {
+                            var role = $scope.applicationMappings[i];
+                            for (var j = 0; j < $scope.applicationRoles.length; j++) {
+                                var realmRole = $scope.applicationRoles[j];
+                                if (realmRole.id == role.id) {
+                                    var idx = $scope.applicationRoles.indexOf(realmRole);
+                                    if (idx != -1) {
+                                        $scope.applicationRoles.splice(idx, 1);
+                                        break;
+                                    }
                                 }
                             }
                         }
-                    }
-                });
+                    });
 
-            }
-        );
+                }
+            );
+        } else {
+            $scope.applicationRoles = null;
+        }
     };
 
 
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
index 84b21fe..6a642a3 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/oauth-clients.js
@@ -270,25 +270,29 @@ module.controller('OAuthClientScopeMappingCtrl', function($scope, $http, realm, 
 
 
     $scope.changeApplication = function() {
-        $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, application : $scope.targetApp.name}, function() {
-                $scope.applicationMappings = OAuthClientApplicationScopeMapping.query({realm : realm.realm, oauth : oauth.id, targetApp : $scope.targetApp.name}, function(){
-                    for (var i = 0; i < $scope.applicationMappings.length; i++) {
-                        var role = $scope.applicationMappings[i];
-                        for (var j = 0; j < $scope.applicationRoles.length; j++) {
-                            var realmRole = $scope.applicationRoles[j];
-                            if (realmRole.id == role.id) {
-                                var idx = $scope.applicationRoles.indexOf(realmRole);
-                                if (idx != -1) {
-                                    $scope.applicationRoles.splice(idx, 1);
-                                    break;
+        if ($scope.targetApp) {
+            $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, application : $scope.targetApp.name}, function() {
+                    $scope.applicationMappings = OAuthClientApplicationScopeMapping.query({realm : realm.realm, oauth : oauth.id, targetApp : $scope.targetApp.name}, function(){
+                        for (var i = 0; i < $scope.applicationMappings.length; i++) {
+                            var role = $scope.applicationMappings[i];
+                            for (var j = 0; j < $scope.applicationRoles.length; j++) {
+                                var realmRole = $scope.applicationRoles[j];
+                                if (realmRole.id == role.id) {
+                                    var idx = $scope.applicationRoles.indexOf(realmRole);
+                                    if (idx != -1) {
+                                        $scope.applicationRoles.splice(idx, 1);
+                                        break;
+                                    }
                                 }
                             }
                         }
-                    }
-                });
+                    });
 
-            }
-        );
+                }
+            );
+        } else {
+            $scope.targetApp = null;
+        }
     };
 
 
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
index aca3e5e..6368399 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js
@@ -65,6 +65,8 @@ module.controller('RealmDropdownCtrl', function($scope, Realm, Current, Auth, $l
 module.controller('RealmCreateCtrl', function($scope, Current, Realm, $upload, $http, $location, Dialog, Notifications) {
     console.log('RealmCreateCtrl');
 
+    Current.realm = null;
+
     $scope.realm = {
         enabled: true
     };
@@ -78,9 +80,8 @@ module.controller('RealmCreateCtrl', function($scope, Current, Realm, $upload, $
         $scope.files = $files;
     };
 
-    $scope.changeFileSelect = function() {
+    $scope.clearFileSelect = function() {
         $scope.files = null;
-        document.getElementById('import-file').click();
     }
 
     $scope.uploadFile = function() {
@@ -402,21 +403,25 @@ module.controller('RealmDefaultRolesCtrl', function ($scope, Realm, realm, appli
         $scope.selectedAppDefRoles = [];
 
         // Populate available roles for selected application
-        var appDefaultRoles = ApplicationRole.query({realm: $scope.realm.realm, application: $scope.application.name}, function () {
+        if ($scope.application) {
+            var appDefaultRoles = ApplicationRole.query({realm: $scope.realm.realm, application: $scope.application.name}, function () {
 
-            if (!$scope.application.hasOwnProperty('defaultRoles') || $scope.application.defaultRoles === null) {
-                $scope.application.defaultRoles = [];
-            }
+                if (!$scope.application.hasOwnProperty('defaultRoles') || $scope.application.defaultRoles === null) {
+                    $scope.application.defaultRoles = [];
+                }
 
-            $scope.availableAppRoles = [];
+                $scope.availableAppRoles = [];
 
-            for (var i = 0; i < appDefaultRoles.length; i++) {
-                var roleName = appDefaultRoles[i].name;
-                if ($scope.application.defaultRoles.indexOf(roleName) < 0) {
-                    $scope.availableAppRoles.push(roleName);
+                for (var i = 0; i < appDefaultRoles.length; i++) {
+                    var roleName = appDefaultRoles[i].name;
+                    if ($scope.application.defaultRoles.indexOf(roleName) < 0) {
+                        $scope.availableAppRoles.push(roleName);
+                    }
                 }
-            }
-        });
+            });
+        } else {
+            $scope.availableAppRoles = null;
+        }
     };
 
     $scope.addAppDefaultRole = function () {
@@ -536,7 +541,7 @@ module.controller('RealmSocialCtrl', function($scope, realm, Realm, serverInfo, 
 module.controller('RealmTokenDetailCtrl', function($scope, Realm, realm, $http, $location, Dialog, Notifications, TimeUnit) {
     console.log('RealmTokenDetailCtrl');
 
-    $scope.realm = { id : realm.id, realm : realm.realm, social : realm.social, registrationAllowed : realm.registrationAllowed };
+    $scope.realm = realm;
 
     $scope.realm.tokenLifespanUnit = TimeUnit.autoUnit(realm.tokenLifespan);
     $scope.realm.tokenLifespan = TimeUnit.toUnit(realm.tokenLifespan, $scope.realm.tokenLifespanUnit);
@@ -673,9 +678,10 @@ module.controller('RealmSMTPSettingsCtrl', function($scope, Current, Realm, real
 
     var booleanSmtpAtts = ["auth","ssl","starttls"];
 
-    $scope.realm = {
-        id : realm.id, realm : realm.realm, social : realm.social, registrationAllowed : realm.registrationAllowed,
-        smtpServer: typeObject(realm.smtpServer)
+    $scope.realm = realm;
+
+    if ($scope.realm.smtpServer) {
+        $scope.realm.smtpServer = typeObject($scope.realm.smtpServer);
     };
 
     var oldCopy = angular.copy($scope.realm);
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/users.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/users.js
index bd0e65e..b0048a9 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/users.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/users.js
@@ -89,25 +89,29 @@ module.controller('UserRoleMappingCtrl', function($scope, $http, realm, user, ro
 
 
     $scope.changeApplication = function() {
-        $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, userId : user.username, application : $scope.application.name}, function() {
-                $scope.applicationMappings = ApplicationRoleMapping.query({realm : realm.realm, userId : user.username, application : $scope.application.name}, function(){
-                    for (var i = 0; i < $scope.applicationMappings.length; i++) {
-                        var role = $scope.applicationMappings[i];
-                        for (var j = 0; j < $scope.applicationRoles.length; j++) {
-                            var realmRole = $scope.applicationRoles[j];
-                            if (realmRole.id == role.id) {
-                                var idx = $scope.applicationRoles.indexOf(realmRole);
-                                if (idx != -1) {
-                                    $scope.applicationRoles.splice(idx, 1);
-                                    break;
+        if ($scope.application) {
+            $scope.applicationRoles = ApplicationRole.query({realm : realm.realm, userId : user.username, application : $scope.application.name}, function() {
+                    $scope.applicationMappings = ApplicationRoleMapping.query({realm : realm.realm, userId : user.username, application : $scope.application.name}, function(){
+                        for (var i = 0; i < $scope.applicationMappings.length; i++) {
+                            var role = $scope.applicationMappings[i];
+                            for (var j = 0; j < $scope.applicationRoles.length; j++) {
+                                var realmRole = $scope.applicationRoles[j];
+                                if (realmRole.id == role.id) {
+                                    var idx = $scope.applicationRoles.indexOf(realmRole);
+                                    if (idx != -1) {
+                                        $scope.applicationRoles.splice(idx, 1);
+                                        break;
+                                    }
                                 }
                             }
                         }
-                    }
-                });
+                    });
 
-            }
-        );
+                }
+            );
+        } else {
+            $scope.applicationRoles = null;
+        }
     };
 
 
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/services.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/services.js
index ccca980..4eef684 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/js/services.js
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/services.js
@@ -13,8 +13,7 @@ module.service('Dialog', function($dialog) {
 
 	dialog.confirmDelete = function(name, type, success) {
 		var title = 'Delete ' + escapeHtml(type.charAt(0).toUpperCase() + type.slice(1));
-		var msg = '<span class="primary">Are you sure you want to permanently delete the ' + escapeHtml(type) + ' "' + escapeHtml(name) + '"?</span>' +
-            '<span>This action can\'t be undone.</span>';
+		var msg = '<span class="primary">Are you sure you want to permanently delete the ' + escapeHtml(type) + ' <strong>' + escapeHtml(name) + '</strong>?</span>';
 		var btns = [ {
 			result : 'cancel',
 			label : 'Cancel',
@@ -34,8 +33,7 @@ module.service('Dialog', function($dialog) {
 
     dialog.confirmGenerateKeys = function(name, type, success) {
         var title = 'Generate new keys for realm';
-        var msg = '<span class="primary">Are you sure you want to permanently generate new keys for ' + name + '"?</span>' +
-            '<span>This action can\'t be undone.</span>';
+        var msg = '<span class="primary">Are you sure you want to permanently generate new keys for <strong>' + name + '</strong>?</span>';
         var btns = [ {
             result : 'cancel',
             label : 'Cancel',
@@ -55,8 +53,7 @@ module.service('Dialog', function($dialog) {
 
     dialog.confirm = function(title, message, success, cancel) {
         var title = title;
-        var msg = '<span class="primary">' + message + '"</span>' +
-            '<span>This action can\'t be undone.</span>';
+        var msg = '<span class="primary">' + message + '"</span>';
         var btns = [ {
             result : 'cancel',
             label : 'Cancel',
@@ -458,7 +455,7 @@ module.factory('ApplicationRole', function($resource) {
 module.factory('Application', function($resource) {
     return $resource('/auth/rest/admin/realms/:realm/applications/:application', {
         realm : '@realm',
-        application : '@name'
+        application : '@application'
     },  {
         update : {
             method : 'PUT'
@@ -611,7 +608,7 @@ module.factory('TimeUnit', function() {
         switch (unit) {
             case 'Seconds': return time;
             case 'Minutes': return time * 60;
-            case 'Hours': return time * 360;
+            case 'Hours': return time * 3600;
             case 'Days': return time * 86400;
             default: throw 'invalid unit ' + unit;
         }
@@ -621,7 +618,7 @@ module.factory('TimeUnit', function() {
         switch (unit) {
             case 'Seconds': return time;
             case 'Minutes': return Math.ceil(time / 60);
-            case 'Hours': return Math.ceil(time / 360);
+            case 'Hours': return Math.ceil(time / 3600);
             case 'Days': return Math.ceil(time / 86400);
             default: throw 'invalid unit ' + unit;
         }
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
index 56df162..6655b8a 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-credentials.html
@@ -18,7 +18,7 @@
         <h2 data-ng-hide="create"><span>{{application.name}}</span> Credentials</h2>
         <form class="form-horizontal" name="credentialForm" novalidate>
             <fieldset data-ng-show="passwordRequired">
-                <legend uncollapsed><span class="text">Change Password</span></legend>
+                <legend><span class="text">Change Password</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="password">New Password</label>
                     <div class="col-sm-4">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
index be150c2..be13612 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-detail.html
@@ -23,7 +23,7 @@
             <li class="active">Settings</li>
         </ol>
         <h2 data-ng-hide="create"><span>{{application.name}}</span> Settings</h2>
-        <form class="form-horizontal" name="applicationForm" novalidate ng-class="{ has-error: applicationForm.$invalid }>
+        <form class="form-horizontal" name="applicationForm" novalidate>
             <fieldset class="border-top">
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="create">*</span></label>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
index 6b313e3..1faf2fe 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-list.html
@@ -9,10 +9,7 @@
             <li class="active">Applications</li>
         </ol>
         <h2><span>{{realm.realm}}</span> Applications</h2>
-        <div class="feedback info inline" data-ng-show="!applications || applications.length == 0">
-            <p><strong>You have not configured applications.</strong> <a class="button" href="#/create/application/{{realm.realm}}">Add Application</a></p>
-        </div>
-        <table class="table" data-ng-hide="applications.length == 0">
+        <table class="table">
             <thead>
             <tr>
                 <th class="kc-table-actions" colspan="3">
@@ -29,7 +26,7 @@
                     </div>
                 </th>
             </tr>
-            <tr data-ng-show="applications.length > 0">
+            <tr data-ng-hide="applications.length == 0">
                 <th>Application Name</th>
                 <th>Enabled</th>
                 <th>Base URL</th>
@@ -55,6 +52,9 @@
                     <a href="{{app.baseUrl}}" data-ng-show="app.baseUrl">{{app.baseUrl}}</a>
                     <span data-ng-hide="app.baseUrl">Not defined</span>
             </tr>
+            <tr data-ng-show="applications.length == 0">
+                <td>No applications available</td>
+            </tr>
             </tbody>
         </table>
         <div class="feedback warning inline" data-ng-show="search && applications.length == 0">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
index 2f89039..c0e2a6b 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-detail.html
@@ -17,8 +17,6 @@
             <li><a href="#/realms/{{realm.realm}}/applications/{{application.name}}/roles">Roles</a></li>
             <li class="active">Add role</li>
         </ol>
-        <h2 class="pull-left" data-ng-show="create"><span>{{application.name}}</span> Add Role</h2>
-        <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
 
         <ol class="breadcrumb" data-ng-hide="create">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
@@ -29,7 +27,11 @@
         </ol>
 
         <h2 data-ng-hide="create"><span>{{application.name}}</span> {{role.name}}</h2>
+        <h2 data-ng-show="create"><span>{{application.name}}</span> Add Role</h2>
+
         <form class="form-horizontal" name="realmForm" novalidate>
+            <span class="fieldset-notice"><span class="required">*</span> Required fields</span>
+
             <fieldset class="border-top">
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="name">Role name <span class="required" data-ng-show="create">*</span></label>
@@ -56,16 +58,6 @@
                 </div>
             </fieldset>
 
-            <div class="pull-right form-actions" data-ng-show="create">
-                <button kc-cancel data-ng-click="cancel()">Cancel</button>
-                <button kc-save data-ng-show="changed">Save</button>
-            </div>
-            <div class="pull-right form-actions" data-ng-show="!create">
-                <button kc-reset data-ng-show="changed">Clear changes</button>
-                <button kc-save  data-ng-show="changed">Save</button>
-                <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
-            </div>
-
             <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
                 <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
                 <div class="form-group col-sm-10">
@@ -141,6 +133,17 @@
                     </div>
                 </div>
             </fieldset>
+
+            <div class="pull-right form-actions" data-ng-show="create">
+                <button kc-cancel data-ng-click="cancel()">Cancel</button>
+                <button kc-save data-ng-show="changed">Save</button>
+            </div>
+            <div class="pull-right form-actions" data-ng-show="!create">
+                <button kc-reset data-ng-show="changed">Clear changes</button>
+                <button kc-save  data-ng-show="changed">Save</button>
+                <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
+            </div>
+
         </form>
     </div>
 </div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
index 634f5b8..f6031f2 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-role-list.html
@@ -18,16 +18,12 @@
             <li class="active">Roles</li>
         </ol>
         <h2><span>{{application.name}}</span> Roles</h2>
-        <div class="feedback info inline" data-ng-show="!roles || roles.length == 0">
-            <p><strong>You have not configured application roles.</strong> <a class="button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a></p>
-        </div>
-        <table class="table" data-ng-hide="!roles || roles.length == 0">
-            <caption data-ng-show="roles && roles.length > 0" class="hidden">Table of realm roles</caption>
+        <table class="table">
             <thead>
             <tr>
                 <th class="kc-table-actions" colspan="3">
                     <div class="pull-right">
-                        <a class="kc-button" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a>
+                        <a class="btn btn-primary" href="#/create/role/{{realm.realm}}/applications/{{application.name}}">Add Role</a>
                         <!-- <button class="remove disabled">Remove</button> -->
                     </div>
                 </th>
@@ -43,7 +39,7 @@
                     </div>
                 </th>
             </tr>
-            <tr>
+            <tr data-ng-hide="!roles || roles.length == 0">
                 <th>Role Name</th>
                 <th>Composite</th>
                 <th>Description</th>
@@ -67,6 +63,9 @@
                 <td>{{role.composite}}</td>
                 <td>{{role.description}}</td>
             </tr>
+            <tr data-ng-show="!roles || roles.length == 0">
+                <td>No application roles available</td>
+            </tr>
             </tbody>
         </table>
     </div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
index ce17763..5b7941d 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/application-scope-mappings.html
@@ -21,7 +21,7 @@
         <p class="subtitle"></p>
         <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset>
-                <legend uncollapsed><span class="text">Realm Roles</span></legend>
+                <legend><span class="text">Realm Roles</span></legend>
                 <div class="form-group col-sm-10">
                     <div class="controls changing-selectors">
                         <div class="select-title">
@@ -53,19 +53,17 @@
             </fieldset>
 
             <fieldset ng-show="applications.length > 0">
-                <legend collapsed><span class="text">Application Roles</span> </legend>
-                <div class="form-group input-select ">
-                    <label class="col-sm-2 control-label" for="applications">Application</label>
-                    <div class="input-group col-sm-4">
+                <legend><span class="text">Application Roles</span> </legend>
+                <div class="form-group input-select col-sm-10">
+                    <label class="control-label" for="applications">Application</label>
+                    <div class="input-group">
                         <div class="select-kc">
                             <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications|remove:application:'id')">
                                 <option value="" selected> Select an Application </option>
                             </select>
                         </div>
                     </div>
-                </div>
-                <div class="form-group col-sm-10" ng-show="targetApp">
-                    <div class="controls changing-selectors application">
+                    <div class="controls changing-selectors" ng-show="targetApp">
                         <div class="select-title">
                             <label class="control-label" for="app-available">Available Roles</label>
                             <select id="app-available" class="form-control" multiple size="5"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
index ee3d95b..166eaa1 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-credentials.html
@@ -17,7 +17,7 @@
         <h2 data-ng-hide="create"><span>{{oauth.name}}</span> Credentials</h2>
         <form class="form-horizontal" name="credentialForm" novalidate>
             <fieldset data-ng-show="passwordRequired">
-                <legend uncollapsed><span class="text">Change Password</span></legend>
+                <legend><span class="text">Change Password</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="password">New Password</label>
                     <div class="col-sm-4">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
index cf4240a..2ac4227 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-list.html
@@ -9,10 +9,7 @@
             <li class="active">OAuth Clients</li>
         </ol>
         <h2><span>{{realm.realm}}</span> OAuth Clients</h2>
-        <div class="feedback info inline" data-ng-show="!oauthClients || oauthClients.length == 0">
-            <p><strong>You have not configured oauth clients.</strong> <a class="button" href="#/create/oauth-client/{{realm.realm}}">Add OAuth Client</a></p>
-        </div>
-        <table class="table" data-ng-hide="oauthClients.length == 0">
+        <table class="table">
             <thead>
             <tr>
                 <th class="kc-table-actions" colspan="3">
@@ -29,7 +26,7 @@
                     </div>
                 </th>
             </tr>
-            <tr data-ng-show="oauthClients.length > 0">
+            <tr data-ng-hide="oauthClients.length == 0">
                 <th>OAuth Client Name</th>
                 <th>Enabled</th>
             </tr>
@@ -51,6 +48,9 @@
                 <td><a href="#/realms/{{realm.realm}}/oauth-clients/{{client.id}}">{{client.name}}</a></td>
                 <td>{{client.enabled}}</td>
             </tr>
+            <tr data-ng-show="oauthClients.length == 0">
+                <td>No clients available</td>
+            </tr>
             </tbody>
         </table>
         <div class="feedback warning inline" data-ng-show="search && oauthClients.length == 0">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
index 3b2d835..b26dd71 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/oauth-client-scope-mappings.html
@@ -19,7 +19,7 @@
         <p class="subtitle"></p>
         <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset>
-                <legend uncollapsed><span class="text">Realm Roles</span></legend>
+                <legend><span class="text">Realm Roles</span></legend>
                 <div class="form-group col-sm-10">
                     <div class="controls changing-selectors">
                         <div class="select-title">
@@ -51,19 +51,17 @@
             </fieldset>
 
             <fieldset ng-show="applications.length > 0">
-                <legend collapsed><span class="text">Application Roles</span> </legend>
-                <div class="form-group input-select">
-                    <label class="control-label col-sm-2" for="applications">Application</label>
-                    <div class="form-group col-sm-4">
+                <legend><span class="text">Application Roles</span> </legend>
+                <div class="form-group input-select col-sm-10">
+                    <label class="control-label" for="applications">Application</label>
+                    <div class="input-group">
                         <div class="select-kc">
                             <select id="applications" name="applications" ng-change="changeApplication()" ng-model="targetApp" ng-options="a.name for a in (applications)">
                                 <option value="" selected> Select an Application </option>
                             </select>
                         </div>
                     </div>
-                </div>
-                <div class="form-group col-sm-10" ng-show="targetApp">
-                    <div class="controls changing-selectors application">
+                    <div class="controls changing-selectors" data-ng-show="targetApp">
                         <div class="select-title">
                             <label class="control-label" for="app-available">Available Roles</label>
                             <select id="app-available" class="form-control" multiple size="5"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-create.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-create.html
index eb80390..472a25d 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-create.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-create.html
@@ -1,12 +1,12 @@
-<div class="bs-sidebar col-sm-3 " data-ng-include data-src="'partials/realm-menu.html'"></div>
+<div class="bs-sidebar col-sm-3 "></div>
 <div id="content-area" class="col-sm-9" role="main">
     <div id="content">
         <h2>Add Realm</h2>
-        <p class="subtitle"><span class="required">*</span> Required fields</p>
 
         <form class="form-horizontal" name="realmForm" novalidate>
+            <span class="fieldset-notice"><span class="required">*</span> Required fields</span>
             <fieldset>
-                <legend uncollapsed><span class="text">Import Realm</span></legend>
+                <legend><span class="text">Import Realm</span></legend>
                 <div class="form-group">
                     <label for="name" class="col-sm-2 control-label">Upload JSON File </label>
                     <div class="col-sm-4">
@@ -14,24 +14,26 @@
                             <a href="#" class="kc-button"><span class="kc-icon-upload">Icon: Upload</span>Choose a JSON File...</a>
                             <input id="import-file" type="file" class="transparent" ng-file-select="onFileSelect($files)">
                         </div>
-                        <span class="kc-uploaded-file" data-ng-show="files.length > 0">{{files[0].name}}</span>
-                        <button class="kc-link" data-ng-show="files.length > 0" data-ng-click="changeFileSelect();">Change</button>
+                        <span class="kc-uploaded-file" data-ng-show="files.length > 0">
+                            {{files[0].name}}
+                        </span>
                     </div>
                 </div>
-                <div class="form-actions inside">
-                    <button type="submit" data-ng-click="uploadFile()" class="primary" data-ng-show="files.length > 0">Upload</button>
+                <div class="pull-right form-actions" data-ng-show="files.length > 0">
+                    <button type="submit" data-ng-click="clearFileSelect()" class="btn btn-lg btn-default">Cancel</button>
+                    <button type="submit" data-ng-click="uploadFile()" class="btn btn-lg btn-primary">Upload</button>
                 </div>
             </fieldset>
         </form>
 
         <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset>
-                <legend uncollapsed><span class="text">Create Realm</span></legend>
+                <legend><span class="text">Create Realm</span></legend>
                 <div class="form-group">
                     <label for="name" class="col-sm-2 control-label">Name <span class="required">*</span></label>
 
                     <div class="col-sm-4">
-                        <input type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired>
+                        <input class="form-control" type="text" id="name" name="name" data-ng-model="realm.realm" autofocusrequired>
                     </div>
                 </div>
                 <div class="form-group">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
index b63cc2e..da4188f 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-credentials.html
@@ -36,60 +36,46 @@
             </fieldset>
             <fieldset class="border-top">
                 <legend uncollapsed><span class="text">Realm Password Policy</span></legend>
-                <div class="form-group clearfix">
-                    <table class="table">
-                        <caption class="hidden">Table of Password Policies</caption>
-                        <thead>
-                        <tr ng-show="(allPolicies|remove:policy:'name').length > 0">
-                            <th colspan="5" class="kc-table-actions">
-                                <div class="pull-right">
-                                    <div class="select-kc">
-                                        <select ng-model="selectedPolicy"
-                                                ng-options="(p.name|capitalize) for p in (allPolicies|remove:policy:'name')"
-                                                data-ng-change="addPolicy(selectedPolicy); selectedPolicy = null">
-                                            <option value="" disabled selected>Add policy...</option>
-                                        </select>
-                                    </div>
+                <table class="table">
+                    <caption class="hidden">Table of Password Policies</caption>
+                    <thead>
+                    <tr ng-show="(allPolicies|remove:policy:'name').length > 0">
+                        <th colspan="5" class="kc-table-actions">
+                            <div class="pull-right">
+                                <div class="select-kc">
+                                    <select ng-model="selectedPolicy"
+                                            ng-options="(p.name|capitalize) for p in (allPolicies|remove:policy:'name')"
+                                            data-ng-change="addPolicy(selectedPolicy); selectedPolicy = null">
+                                        <option value="" disabled selected>Add policy...</option>
+                                    </select>
                                 </div>
-                            </th>
-                        </tr>
-                        <tr>
-                            <th>Policy Type</th>
-                            <th>Policy Value</th>
-                            <th>Actions</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        <tr ng-repeat="p in policy">
-                            <td>
-                                <div class="form-group col-sm-12">
-                                    <input class="form-control disabled" type="text" value="{{p.name|capitalize}}" readonly>
+                            </div>
+                        </th>
+                    </tr>
+                    <tr>
+                        <th>Policy Type</th>
+                        <th>Policy Value</th>
+                        <th>Actions</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr ng-repeat="p in policy">
+                        <td>
+                            <div class="form-group col-sm-12">
+                                <input class="form-control disabled" type="text" value="{{p.name|capitalize}}" readonly>
+                            </div>
+                        </td>
+                        <td>
+                            <div class="form-group col-sm-12">
+                            <input class="form-control" ng-model="p.value" type="number" placeholder="No value assigned"  min="1" max="50">
                                 </div>
-                            </td>
-                            <td>
-                                <div class="form-group col-sm-12">
-                                <input class="form-control" ng-model="p.value" type="number" placeholder="No value assigned"  min="1" max="50">
-                                    </div>
-                            </td>
-                            <td class="pull-right">
-                                <div class="">
-                                    <button type="button" class="btn btn-default"
-                                            tooltip="{{policyMessages[name]}}"
-                                            tooltip-placement="left">
-                                        <span class="kc-icon-question">Question icon</span>
-                                        Help
-                                    </button>
-                                    <button type="button" class="btn btn-default"
-                                            ng-click="removePolicy($index)">
-                                        <span class="kc-icon-remove">Remove icon</span>
-                                        Remove
-                                    </button>
-                                </div>
-                            </td>
-                        </tr>
-                        </tbody>
-                    </table>
-                </div>
+                        </td>
+                        <td>
+                            <div class="action-div"><i class="pficon pficon-delete" ng-click="removePolicy($index)"></i></div>
+                        </td>
+                    </tr>
+                    </tbody>
+                </table>
             </fieldset>
             <div class="pull-right form-actions">
                 <button kc-reset data-ng-show="changed">Clear changes</button>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
index 8b5ad78..81d329b 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-default-roles.html
@@ -10,7 +10,7 @@
         <h2><span>{{realm.realm}}</span> Registration Settings</h2>
         <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset>
-                <legend uncollapsed><span class="text">Realm Default Roles</span> </legend>
+                <legend><span class="text">Realm Default Roles</span> </legend>
                 <div class="form-group">
                     <div class="controls changing-selectors col-sm-10">
                         <div class="select-title">
@@ -42,7 +42,7 @@
             </fieldset>
 
             <fieldset ng-show="applications.length > 0">
-                <legend uncollapsed><span class="text">Application Default Roles</span> </legend>
+                <legend><span class="text">Application Default Roles</span> </legend>
                 <div class="form-group input-select">
                     <label class="col-sm-2 control-label" for="applications">Application</label>
                     <div class="col-sm-4">
@@ -52,9 +52,7 @@
                             </select>
                         </div>
                     </div>
-                </div>
-                <div class="form-group" ng-show="application">
-                    <div class="controls changing-selectors application col-sm-10">
+                    <div class="controls changing-selectors" ng-show="application">
                         <div class="select-title">
                             <label class="control-label" for="available-app">Available Roles</label>
                             <select id="available-app" class="form-control" multiple size="5"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
index 94f2f90..da8375a 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-detail.html
@@ -12,7 +12,7 @@
         <p class="subtitle" data-ng-show="createRealm"><span class="required">*</span> Required fields</p>
         <form class="form-horizontal" name="realmForm" novalidate>
             <fieldset>
-                <legend uncollapsed class="aj-collapse open"><span class="text">Required Settings</span></legend>
+                <legend class="aj-collapse open"><span class="text">Required Settings</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="name">Name <span class="required" data-ng-show="createRealm">*</span></label>
 
@@ -28,7 +28,7 @@
                 </div>
             </fieldset>
             <fieldset>
-                <legend uncollapsed><span class="text">Login Options</span></legend>
+                <legend><span class="text">Login Options</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="social">Social login</label>
                     <div class="col-sm-4">
@@ -67,7 +67,7 @@
                 </div>
             </fieldset>
             <fieldset>
-                <legend uncollapsed><span class="text">Optional Settings</span></legend>
+                <legend><span class="text">Optional Settings</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="loginTheme">Login Theme</label>
                     <div class="col-sm-4">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
index b1a8b22..cba699a 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-smtp.html
@@ -8,8 +8,8 @@
             <li class="active">SMTP Configuration</li>
         </ol>
         <h2><span>{{realm.realm}}</span> Email Server Settings</h2>
-        <p class="subtitle pull-right"><span class="required">*</span> Required fields</p>
         <form class="form-horizontal" name="realmForm" novalidate>
+            <span class="fieldset-notice"><span class="required">*</span> Required fields</span>
             <fieldset>
                 <legend uncollapsed><span class="text">Required Settings</span></legend>
                 <div class="form-group clearfix">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
index 7ed8605..0394bec 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html
@@ -9,8 +9,12 @@
         </ol>
         <h2><span>{{realm.realm}}</span> Social Providers Settings</h2>
 
-        <div class="feedback info inline">
-            <p><strong>Social Callback URL:</strong> {{callbackUrl}}</p>
+        <div class="alert alert-info alert-dismissable">
+            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">
+                <span class="pficon pficon-close"></span>
+            </button>
+            <span class="pficon pficon-info"></span>
+            <strong>Social Callback URL:</strong> {{callbackUrl}}</p>
         </div>
 
         <form name="realmForm" novalidate>
@@ -43,19 +47,19 @@
                         <tr ng-repeat="pId in configuredProviders">
                             <td>
                                 <div class="clearfix">
-                                    <input class="input-small disabled" type="text" value="{{pId|capitalize}}" readonly>
+                                    <input class="form-control input-small disabled" type="text" value="{{pId|capitalize}}" readonly>
                                 </div>
                             </td>
                             <td>
-                                <input class="input-small" type="text" placeholder="Key" ng-model="realm.socialProviders[pId+'.key']"
+                                <input class="form-control" type="text" placeholder="Key" ng-model="realm.socialProviders[pId+'.key']"
                                        ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required>
                             </td>
                             <td>
-                                <input class="input-small" type="text" placeholder="Secret" ng-model="realm.socialProviders[pId+'.secret']"
+                                <input class="form-control" type="text" placeholder="Secret" ng-model="realm.socialProviders[pId+'.secret']"
                                        ng-class="{'dirty': postSaveProviders.indexOf(pId) > -1}" required>
                             </td>
                             <td>
-                                <div class="action-div"><i class="icon-remove" ng-click="removeProvider(pId)"></i></div>
+                                <div class="action-div"><i class="pficon pficon-delete" ng-click="removeProvider(pId)"></i></div>
                             </td>
                         </tr>
                         </tbody>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
index 66c8006..86ceccd 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-detail.html
@@ -57,16 +57,10 @@
                 <button kc-save data-ng-show="changed">Save</button>
             </div>
 
-            <div class="pull-right  form-actions" data-ng-show="!create">
-                <button kc-reset data-ng-show="changed">Clear changes</button>
-                <button kc-save data-ng-show="changed">Save</button>
-                <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
-            </div>
-
             <fieldset data-ng-show="!create && (compositeSwitch || role.composite)">
-                <legend collapsed><span class="text">Composite Realm Roles</span> </legend>
+                <legend uncollapsed><span class="text">Composite Realm Roles</span> </legend>
                 <div class="form-group">
-                    <div class="controls changing-selectors">
+                    <div class="controls changing-selectors col-sm-10">
                         <div class="select-title">
                             <label for="available">Available Roles</label>
                             <select id="available" class="form-control" multiple size="5"
@@ -96,8 +90,8 @@
             </fieldset>
 
             <fieldset ng-show="applications.length > 0 && !create && (compositeSwitch || role.composite)">
-                <legend collapsed><span class="text">Composite Application Roles</span> </legend>
-                <div class="form-group input-select">
+                <legend uncollapsed><span class="text">Composite Application Roles</span> </legend>
+                <div class="form-group input-select col-sm-10">
                     <label for="applications">Application</label>
                     <div class="input-group">
                         <div class="select-kc">
@@ -106,9 +100,7 @@
                             </select>
                         </div>
                     </div>
-                </div>
-                <div class="form-group" ng-show="compositeApp">
-                    <div class="controls changing-selectors application">
+                    <div class="controls changing-selectors" ng-show="compositeApp">
                         <div class="select-title">
                             <label class="control-label" for="available-app">Available Roles</label>
                             <select id="available-app" class="form-control" multiple size="5"
@@ -137,6 +129,12 @@
                 </div>
             </fieldset>
 
+            <div class="pull-right  form-actions" data-ng-show="!create">
+                <button kc-reset data-ng-show="changed">Clear changes</button>
+                <button kc-save data-ng-show="changed">Save</button>
+                <button kc-delete data-ng-click="remove()" data-ng-hide="changed">Delete</button>
+            </div>
+
         </form>
     </div>
 </div>
\ No newline at end of file
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
index 1ef0b64..e3a6ae3 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-list.html
@@ -8,16 +8,14 @@
             <li class="active">Roles</li>
         </ol>
         <h2><span>{{realm.realm}}</span> Roles</h2>
-        <div class="feedback info inline" data-ng-show="!roles || roles.length == 0">
-            <p><strong>You have not configured realm roles.</strong> <a class="kc-button" href="#/create/role/{{realm.realm}}">Add Role</a></p>
-        </div>
+
         <div class="panel">
-            <table class="table" data-ng-hide="!roles || roles.length == 0">
+            <table class="table">
                 <thead>
                 <tr>
                     <th class="kc-table-actions" colspan="3">
                         <div class="pull-right">
-                            <a class="kc-button" href="#/create/role/{{realm.realm}}">Add Role</a>
+                            <a class="btn btn-primary" href="#/create/role/{{realm.realm}}">Add Role</a>
                             <!-- <button class="remove disabled">Remove</button> -->
                         </div>
                     </th>
@@ -33,7 +31,7 @@
                         </div>
                     </th>
                 </tr>
-                <tr>
+                <tr data-ng-show="roles && roles.length > 0">
                     <th>Role Name</th>
                     <th>Composite</th>
                     <th>Description</th>
@@ -57,6 +55,9 @@
                     <td>{{role.composite}}</td>
                     <td>{{role.description}}</td>
                 </tr>
+                <tr data-ng-show="!roles || roles.length == 0">
+                    <td>No realm roles available</td>
+                </tr>
                 </tbody>
             </table>
         </div>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
index 7bb365f..d8e0208 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/role-mappings.html
@@ -13,12 +13,12 @@
             <li class="active">Role Mappings</li>
         </ol>
         <h2><span>{{user.username}}'s</span> Role Mappings</h2>
-        <p class="subtitle">All fields required</p>
         <form class="form-horizontal" name="realmForm" novalidate>
+
             <fieldset>
-                <legend uncollapsed><span class="text">Realm Roles</span> </legend>
+                <legend><span class="text">Realm Roles</span> </legend>
                 <div class="form-group">
-                    <div class="controls changing-selectors">
+                    <div class="controls changing-selectors col-sm-10">
                         <div class="select-title">
                             <label for="available">Available Roles</label>
                             <select id="available" class="form-control" multiple size="5"
@@ -48,8 +48,8 @@
             </fieldset>
 
             <fieldset ng-show="applications.length > 0">
-                <legend collapsed><span class="text">Application Roles</span> </legend>
-                <div class="form-group input-select">
+                <legend><span class="text">Application Roles</span> </legend>
+                <div class="form-group input-select col-sm-10">
                     <label for="applications">Application</label>
                     <div class="input-group">
                         <div class="select-kc">
@@ -58,9 +58,7 @@
                             </select>
                         </div>
                     </div>
-                </div>
-                <div class="form-group" ng-show="application">
-                    <div class="controls changing-selectors application">
+                    <div class="controls changing-selectors" ng-show="application">
                         <div class="select-title">
                             <label for="available-app">Available Roles</label>
                             <select id="available-app" class="form-control" multiple size="5"
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
index 7351a98..6d0fd70 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-credentials.html
@@ -16,7 +16,7 @@
 
         <form class="form-horizontal" name="userForm" novalidate>
             <fieldset class="border-top">
-                <legend uncollapsed><span class="text">Credential Management</span></legend>
+                <legend><span class="text">Credential Management</span></legend>
                 <div class="form-group">
                     <label class="col-sm-2 control-label" for="password">Reset password</label>
                     <div class="col-sm-4 kc-multiline">
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
index 0eb8bc3..c258661 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-detail.html
@@ -14,7 +14,6 @@
             <li class="active">Add</li>
         </ol>
         <h2 data-ng-show="create">Add User</h2>
-        <p class="subtitle" data-ng-show="create"><span class="required">*</span> Required fields</p>
         <ol class="breadcrumb" data-ng-hide="create">
             <li><a href="#/realms/{{realm.realm}}">{{realm.realm}}</a></li>
             <li><a href="#/realms/{{realm.realm}}/users">Users</a></li>
@@ -24,6 +23,7 @@
         <h2 data-ng-hide="create"><span>{{user.username}}'s</span> Attributes</h2>
 
         <form class="form-horizontal" name="userForm" novalidate>
+            <span class="fieldset-notice"><span class="required">*</span> Required fields</span>
             <fieldset class="border-top">
                 <div class="form-group">
                     <label class="col-sm-2 control-label"for="username">Username <span class="required" data-ng-show="create">*</span></label>
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
index 9be6e44..71e3a8f 100755
--- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
+++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/user-list.html
@@ -58,15 +58,12 @@
                 <td>{{user.firstName}}</td>
                 <td>{{user.email}}</td>
             </tr>
+            <tr data-ng-show="!users || users.length == 0">
+                <td data-ng-show="!users">Please enter a search, or click on view all users</td>
+                <td data-ng-show="searchLoaded && users.length == 0 && lastSearch != null">Your search returned no results</td>
+                <td data-ng-show="searchLoaded && users.length == 0 && lastSearch == null">No users available</td>
+            </tr>
             </tbody>
         </table>
-        <div class="feedback warning inline" data-ng-show="searchLoaded && users.length == 0">
-            <p data-ng-show="lastSearch != null"><strong>Your search returned no results.</strong><br>Try modifying the query and try again.</p>
-            <p data-ng-show="lastSearch == null"><strong>No users present.</strong><br>Create some using the "Add User" button.</p>
-        </div>
-        <div class="feedback info inline" data-ng-show="!users">
-            <br/>
-            <p><strong>Search for users.</strong><br>Please enter a search to display users.</p>
-        </div>
     </div>
 </div>
\ No newline at end of file
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
index ec170a1..6faf13d 100644
--- a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/admin-console.css
@@ -105,9 +105,23 @@ html, body, body > .container, #view, #content-area{
     display: block;
 }
 
-p.subtitle {
-    position: absolute;
-    right: 2.5em;
+.fieldset-notice {
+    color: #B7B7B7;
+    font-size: 1.1em;
+    float: right;
+    margin-top: -2em;
+}
+
+th.kc-table-actions {
+    line-height: 1em !important;
+}
+
+.action-div {
+    padding-top: 3px;
+}
+
+.required {
+    color: #CB2915;
 }
 
 #content-area {
@@ -244,6 +258,7 @@ header .navbar {
 }
 .bs-sidebar ul {
     list-style: none;
+    padding-left: 10px;
 }
 
 .bs-sidebar ul li {
@@ -380,6 +395,10 @@ header .navbar {
     color: #a1a1a1;
 }
 
+fieldset {
+    padding-bottom: 1em;
+}
+
 /* Legend stuff */
 legend {
     border-color: #E9E8E8;
@@ -389,7 +408,7 @@ legend {
     display: block;
     font-size: 1em;
     margin-bottom: 0;
-    padding-bottom: 2em;
+    padding-bottom: 1em;
     padding-top: 2em;
 }
 
@@ -647,7 +666,7 @@ legend .kc-icon-collapse {
     float: left;
     font-weight: bold;
     margin-right: 0.909091em;
-    padding-top: 0.454545em;
+    padding-top: 3px;
 }
 .kc-link-input-file {
     display: inline-block;
@@ -690,7 +709,7 @@ legend .kc-icon-collapse {
     z-index: 100;
 }
 
-.alert {
+.feedback-aligner .alert {
     background-position: 1.27273em center;
     background-repeat: no-repeat;
     border-radius: 2px;
@@ -704,24 +723,27 @@ legend .kc-icon-collapse {
     position: relative;
     text-align: left;
 }
-.alert.alert-success {
+.feedback-aligner .alert.alert-success {
     background-color: #E4F1E1;
-    --background-image: url("img/feedback-success-sign.png");
     border-color: #4B9E39;
 }
-.alert.alert-danger {
+.feedback-aligner .alert.alert-danger {
     background-color: #F8E7E7;
-    --background-image: url("img/feedback-error-sign.png");
     border-color: #B91415;
 }
-.alert.alert-warning {
+.feedback-aligner .alert.alert-warning {
     background-color: #FEF1E9;
-    --background-image: url("img/feedback-warning-sign.png");
     border-color: #F17528;
 }
-.alert.alert-info {
+.feedback-aligner .alert.alert-info {
     background-color: #E4F3FA;
-    --background-image: url("img/feedback-info-sign.png");
     border-color: #5994B2;
 }
 
+.modal-header h3 {
+    margin-top: 9.5px;
+}
+
+.modal-footer {
+    margin-top: 0;
+}
\ No newline at end of file
diff --git a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
index 9da6e2b..0e60a40 100644
--- a/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
+++ b/admin-ui-styles/src/main/resources/META-INF/resources/admin-ui/css/tables.css
@@ -62,7 +62,7 @@ table tbody tr td:first-child {
 }
 */
 table thead tr th:last-child {
-  border-right: none;
+  /*border-right: none;*/
 }
 table thead tr th button,
 table thead tr th .button {
@@ -74,7 +74,7 @@ table tbody tr:first-child td {
 
 }
 table tbody tr td:last-child {
-  border-right: none;
+ /* border-right: none;*/
 }
 /*
 table tbody tr:hover {
diff --git a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
index 571eda2..ebd181b 100755
--- a/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
+++ b/testsuite/integration/src/main/java/org/keycloak/testutils/KeycloakServer.java
@@ -47,7 +47,6 @@ import org.keycloak.models.RealmModel;
 import org.keycloak.models.UserModel;
 import org.keycloak.representations.idm.RealmRepresentation;
 import org.keycloak.services.filters.KeycloakSessionServletFilter;
-import org.keycloak.services.managers.ApplianceBootstrap;
 import org.keycloak.services.managers.RealmManager;
 import org.keycloak.services.resources.KeycloakApplication;
 
@@ -222,21 +221,16 @@ public class KeycloakServer {
         }
     }
 
-    protected void setupDefaultRealm() {
+    protected void setupDevConfig() {
         KeycloakSession session = factory.createSession();
         session.getTransaction().begin();
 
         try {
             RealmManager manager = new RealmManager(session);
 
-            if (manager.getRealm(Constants.ADMIN_REALM) != null) {
-                return;
-            }
-
-            new ApplianceBootstrap().bootstrap(session);
-
-            // No need to require admin to change password as this server is for dev/test
-            manager.getRealm(Constants.ADMIN_REALM).getUser("admin").removeRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
+            RealmModel adminRealm = manager.getRealm(Constants.ADMIN_REALM);
+            UserModel admin = adminRealm.getUser("admin");
+            admin.removeRequiredAction(UserModel.RequiredAction.UPDATE_PASSWORD);
 
             session.getTransaction().commit();
         } finally {
@@ -275,7 +269,7 @@ public class KeycloakServer {
 
         factory = ((KeycloakApplication)deployment.getApplication()).getFactory();
 
-        setupDefaultRealm();
+        setupDevConfig();
 
         if (config.getResourcesHome() != null) {
             info("Loading resources from " + config.getResourcesHome());