diff --git a/apps/audits/views.py b/apps/audits/views.py
index 8c9b6467dd9bf8b5e3aa47fc6657910cbf078708..6f358090d0c5a8b8e336f188296302c16330425f 100644
--- a/apps/audits/views.py
+++ b/apps/audits/views.py
@@ -119,7 +119,7 @@ class OperateLogListView(PermissionsMixin, DatetimeSearchMixin, ListView):
 
     def get_context_data(self, **kwargs):
         context = {
-            'user_list': current_org.get_org_users(),
+            'user_list': current_org.get_org_users_and_auditors(),
             'actions': self.actions_dict,
             'resource_type_list': get_resource_type_list(),
             'date_from': self.date_from,
@@ -142,7 +142,7 @@ class PasswordChangeLogList(PermissionsMixin, DatetimeSearchMixin, ListView):
     permission_classes = [IsOrgAdmin | IsAuditor]
 
     def get_queryset(self):
-        users = current_org.get_org_users()
+        users = current_org.get_org_users_and_auditors()
         self.queryset = super().get_queryset().filter(
             user__in=[user.__str__() for user in users]
         )
@@ -159,7 +159,7 @@ class PasswordChangeLogList(PermissionsMixin, DatetimeSearchMixin, ListView):
 
     def get_context_data(self, **kwargs):
         context = {
-            'user_list': current_org.get_org_users(),
+            'user_list': current_org.get_org_users_and_auditors(),
             'date_from': self.date_from,
             'date_to': self.date_to,
             'user': self.user,
@@ -180,7 +180,7 @@ class LoginLogListView(PermissionsMixin, DatetimeSearchMixin, ListView):
 
     @staticmethod
     def get_org_users():
-        users = current_org.get_org_users().values_list('username', flat=True)
+        users = current_org.get_org_users_and_auditors().values_list('username', flat=True)
         return users
 
     def get_queryset(self):
@@ -234,7 +234,7 @@ class CommandExecutionListView(UserCommandExecutionListView):
         return queryset
 
     def get_user_list(self):
-        users = current_org.get_org_users()
+        users = current_org.get_org_users_exclude_auditors()
         return users
 
     def get_context_data(self, **kwargs):
diff --git a/apps/jumpserver/views.py b/apps/jumpserver/views.py
index f9d692f31362051e42b6d76d17ea6ecc303428a7..c5bcc3fb8cb73927fb7c3e8e9aa675ca014515d7 100644
--- a/apps/jumpserver/views.py
+++ b/apps/jumpserver/views.py
@@ -45,7 +45,7 @@ class IndexView(PermissionsMixin, TemplateView):
 
     @staticmethod
     def get_user_count():
-        return current_org.get_org_users().count()
+        return current_org.get_org_users_and_auditors().count()
 
     @staticmethod
     def get_asset_count():
@@ -100,7 +100,7 @@ class IndexView(PermissionsMixin, TemplateView):
         return self.session_month.values('user').distinct().count()
 
     def get_month_inactive_user_total(self):
-        count = current_org.get_org_users().count() - self.get_month_active_user_total()
+        count = current_org.get_org_users_and_auditors().count() - self.get_month_active_user_total()
         if count < 0:
             count = 0
         return count
@@ -116,7 +116,7 @@ class IndexView(PermissionsMixin, TemplateView):
 
     @staticmethod
     def get_user_disabled_total():
-        return current_org.get_org_users().filter(is_active=False).count()
+        return current_org.get_org_users_and_auditors().filter(is_active=False).count()
 
     @staticmethod
     def get_asset_disabled_total():
diff --git a/apps/orgs/models.py b/apps/orgs/models.py
index 9b97f77898350fc3d5540c907024e6c0e6805999..dcff6dc92240fa759a54877075a03429e7dd229d 100644
--- a/apps/orgs/models.py
+++ b/apps/orgs/models.py
@@ -68,6 +68,16 @@ class Organization(models.Model):
         return org
 
     def get_org_users(self, include_app=False):
+        from users.models import User
+        if self.is_real():
+            users = self.users.all()
+        else:
+            users = User.objects.all()
+        if not include_app:
+            users = users.exclude(role=User.ROLE_APP)
+        return users
+
+    def get_org_users_and_auditors(self, include_app=False):
         from users.models import User
         if self.is_real():
             users = self.users.all() | self.auditors.all()
@@ -77,6 +87,16 @@ class Organization(models.Model):
             users = users.exclude(role=User.ROLE_APP)
         return users
 
+    def get_org_users_exclude_auditors(self, include_app=False):
+        from users.models import User
+        if self.is_real():
+            users = self.users.all()
+        else:
+            users = User.objects.exclude(role=User.ROLE_AUDITOR)
+        if not include_app:
+            users = users.exclude(role=User.ROLE_APP)
+        return users
+
     def get_org_admins(self):
         if self.is_real():
             return self.admins.all()
@@ -115,7 +135,8 @@ class Organization(models.Model):
         elif user.is_auditor:
             admin_orgs = user.audit_orgs.all()
             if not admin_orgs:
-                admin_orgs = [cls.default()]
+                admin_orgs = list(cls.objects.all())
+                admin_orgs.append(cls.default())
         return admin_orgs
 
     @classmethod
diff --git a/apps/perms/forms/asset_permission.py b/apps/perms/forms/asset_permission.py
index da3096b301a33f31c3e1e38a8d16b59c301a27b2..bef671503f36896ebc44fb3be6e948f148273818 100644
--- a/apps/perms/forms/asset_permission.py
+++ b/apps/perms/forms/asset_permission.py
@@ -39,7 +39,7 @@ class AssetPermissionForm(OrgModelForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
         users_field = self.fields.get('users')
-        users_field.queryset = current_org.get_org_users()
+        users_field.queryset = current_org.get_org_users_exclude_auditors()
 
         nodes_field = self.fields['nodes']
         nodes_field.choices = ((n.id, n.full_value) for n in Node.get_queryset())
diff --git a/apps/perms/forms/remote_app_permission.py b/apps/perms/forms/remote_app_permission.py
index 2e0cc1b665542f750be7c8d7198c9a8af388b03f..f8bdb391d4970d76799c13fcdffe6ce119a25de0 100644
--- a/apps/perms/forms/remote_app_permission.py
+++ b/apps/perms/forms/remote_app_permission.py
@@ -19,7 +19,7 @@ class RemoteAppPermissionCreateUpdateForm(OrgModelForm):
         super().__init__(*args, **kwargs)
         users_field = self.fields.get('users')
         if hasattr(users_field, 'queryset'):
-            users_field.queryset = current_org.get_org_users()
+            users_field.queryset = current_org.get_org_users_exclude_auditors()
 
     class Meta:
         model = RemoteAppPermission
diff --git a/apps/perms/views/asset_permission.py b/apps/perms/views/asset_permission.py
index 133e14e207adfbcad1a1d4966b75e8502f9bff86..ac7dd57b942748bd1495cc1e52f43feb53b20d62 100644
--- a/apps/perms/views/asset_permission.py
+++ b/apps/perms/views/asset_permission.py
@@ -135,7 +135,7 @@ class AssetPermissionUserView(PermissionsMixin,
         context = {
             'app': _('Perms'),
             'action': _('Asset permission user list'),
-            'users_remain': current_org.get_org_users().exclude(
+            'users_remain': current_org.get_org_users_exclude_auditors().exclude(
                 assetpermission=self.object
             ),
             'user_groups_remain': UserGroup.objects.exclude(
diff --git a/apps/perms/views/remote_app_permission.py b/apps/perms/views/remote_app_permission.py
index 91774be0d00e449e2e41e130440648588cbc06f0..cab57092778aff87f2d9d468f2b5a790919e3fe0 100644
--- a/apps/perms/views/remote_app_permission.py
+++ b/apps/perms/views/remote_app_permission.py
@@ -107,7 +107,7 @@ class RemoteAppPermissionUserView(PermissionsMixin,
         context = {
             'app': _('Perms'),
             'action': _('RemoteApp permission user list'),
-            'users_remain': current_org.get_org_users().exclude(
+            'users_remain': current_org.get_org_users_exclude_auditors().exclude(
                 remoteapppermission=self.object
             ),
             'user_groups_remain': UserGroup.objects.exclude(
diff --git a/apps/users/api/user.py b/apps/users/api/user.py
index 53933f577eaaf978dc6f075aa69e54aecd1e04cd..78c4725f879a8732b6b91383dc8980997d2f2eda 100644
--- a/apps/users/api/user.py
+++ b/apps/users/api/user.py
@@ -60,7 +60,7 @@ class UserViewSet(IDInCacheFilterMixin, BulkModelViewSet):
         self.send_created_signal(users)
 
     def get_queryset(self):
-        queryset = current_org.get_org_users().prefetch_related('groups')
+        queryset = current_org.get_org_users_and_auditors().prefetch_related('groups')
         return queryset
 
     def get_permissions(self):
diff --git a/apps/users/forms.py b/apps/users/forms.py
index 6b2c2f8d3f561801f73406bf2413e610cb54174b..4ea4fc364cbbabee7b62591273d8368186237eae 100644
--- a/apps/users/forms.py
+++ b/apps/users/forms.py
@@ -67,8 +67,14 @@ class UserCreateUpdateFormMixin(OrgModelForm):
 
         # Org admin user
         else:
-            roles.append((User.ROLE_USER, dict(User.ROLE_CHOICES).get(User.ROLE_USER)))
-            roles.append((User.ROLE_AUDITOR, dict(User.ROLE_CHOICES).get(User.ROLE_AUDITOR)))
+            user = kwargs.get('instance')
+            # Update
+            if user:
+                role = kwargs.get('instance').role
+                roles.append((role, dict(User.ROLE_CHOICES).get(role)))
+            # Create
+            else:
+                roles.append((User.ROLE_USER, dict(User.ROLE_CHOICES).get(User.ROLE_USER)))
 
         field = self.fields['role']
         field.choices = set(roles)
@@ -329,7 +335,7 @@ class UserGroupForm(OrgModelForm):
             return
         users_field = self.fields.get('users')
         if hasattr(users_field, 'queryset'):
-            users_field.queryset = current_org.get_org_users()
+            users_field.queryset = current_org.get_org_users_exclude_auditors()
 
     def save(self, commit=True):
         group = super().save(commit=commit)
diff --git a/apps/users/serializers/v1.py b/apps/users/serializers/v1.py
index 25b6207a4820727d1d0aab3263d159d27191b905..864618823daa2f5b3abc379e68dc7d33c5738e80 100644
--- a/apps/users/serializers/v1.py
+++ b/apps/users/serializers/v1.py
@@ -50,7 +50,7 @@ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer):
 
     def validate_role(self, value):
         request = self.context.get('request')
-        if not request.user.is_org_admin and value != User.ROLE_USER:
+        if not request.user.is_superuser and value != User.ROLE_USER:
             role_display = dict(User.ROLE_CHOICES)[User.ROLE_USER]
             msg = _("Role limit to {}".format(role_display))
             raise serializers.ValidationError(msg)
diff --git a/apps/users/templates/users/user_detail.html b/apps/users/templates/users/user_detail.html
index b39671a73467d83083798a1e7f405f2ba20d4dd2..1b38a217502476f4d7ecffa2ef0093281c959675 100644
--- a/apps/users/templates/users/user_detail.html
+++ b/apps/users/templates/users/user_detail.html
@@ -211,45 +211,46 @@
                                     </table>
                                 </div>
                             </div>
+                            {% if not user_object.is_auditor %}
+                                <div class="panel panel-info">
+                                    <div class="panel-heading">
+                                        <i class="fa fa-info-circle"></i> {% trans 'User group' %}
+                                    </div>
+                                    <div class="panel-body">
+                                        <table class="table group_edit">
+                                            <tbody>
+                                                <form>
+                                                    <tr>
+                                                        <td colspan="2" class="no-borders">
+                                                            <select data-placeholder="{% trans 'Join user groups' %}" id="groups_selected" class="select2" style="width: 100%" multiple="" tabindex="4">
+                                                                {% for group in groups %}
+                                                                    <option value="{{ group.id }}" id="opt_{{ group.id }}" >{{ group.name }}</option>
+                                                                {% endfor %}
+                                                            </select>
+                                                        </td>
+                                                    </tr>
+                                                    <tr>
+                                                        <td colspan="2" class="no-borders">
+                                                            <button type="button" class="btn btn-info btn-small" id="btn_join_group">{% trans 'Join' %}</button>
+                                                        </td>
+                                                    </tr>
+                                                </form>
 
-                            <div class="panel panel-info">
-                                <div class="panel-heading">
-                                    <i class="fa fa-info-circle"></i> {% trans 'User group' %}
-                                </div>
-                                <div class="panel-body">
-                                    <table class="table group_edit">
-                                        <tbody>
-                                        <form>
-                                            <tr>
-                                                <td colspan="2" class="no-borders">
-                                                    <select data-placeholder="{% trans 'Join user groups' %}" id="groups_selected" class="select2" style="width: 100%" multiple="" tabindex="4">
-                                                        {% for group in groups %}
-                                                        <option value="{{ group.id }}" id="opt_{{ group.id }}" >{{ group.name }}</option>
-                                                        {% endfor %}
-                                                    </select>
-                                                </td>
-                                            </tr>
-                                            <tr>
-                                                <td colspan="2" class="no-borders">
-                                                    <button type="button" class="btn btn-info btn-small" id="btn_join_group">{% trans 'Join' %}</button>
-                                                </td>
-                                            </tr>
-                                        </form>
-
-                                        {% for group in user_object.groups.all %}
-                                        <tr>
-                                          <td >
-                                              <b class="bdg_group" data-gid={{ group.id }}>{{ group.name }}</b>
-                                          </td>
-                                          <td>
-                                              <button class="btn btn-danger pull-right btn-xs btn_leave_group" type="button"><i class="fa fa-minus"></i></button>
-                                          </td>
-                                        </tr>
-                                        {% endfor %}
-                                        </tbody>
-                                    </table>
+                                                {% for group in user_object.groups.all %}
+                                                    <tr>
+                                                        <td >
+                                                            <b class="bdg_group" data-gid={{ group.id }}>{{ group.name }}</b>
+                                                        </td>
+                                                        <td>
+                                                            <button class="btn btn-danger pull-right btn-xs btn_leave_group" type="button"><i class="fa fa-minus"></i></button>
+                                                        </td>
+                                                    </tr>
+                                                {% endfor %}
+                                            </tbody>
+                                        </table>
+                                    </div>
                                 </div>
-                            </div>
+                            {% endif %}
                         </div>
                     </div>
                 </div>
diff --git a/apps/users/views/group.py b/apps/users/views/group.py
index 2f19a805552d8c3b20ed89ea9b9c59860c350e3a..88b8b8442fa1906f66b31fdc602266a0d6fb765e 100644
--- a/apps/users/views/group.py
+++ b/apps/users/views/group.py
@@ -76,7 +76,7 @@ class UserGroupDetailView(PermissionsMixin, DetailView):
     permission_classes = [IsOrgAdmin]
 
     def get_context_data(self, **kwargs):
-        users = current_org.get_org_users().exclude(id__in=self.object.users.all())
+        users = current_org.get_org_users_exclude_auditors().exclude(id__in=self.object.users.all())
         context = {
             'app': _('Users'),
             'action': _('User group detail'),
diff --git a/apps/users/views/user.py b/apps/users/views/user.py
index 1a8c25f2e3e03c0ca20e037ae2356cdd35088c57..353fbed40388cb8145264f420c16eb323c482285 100644
--- a/apps/users/views/user.py
+++ b/apps/users/views/user.py
@@ -195,7 +195,7 @@ class UserDetailView(PermissionsMixin, DetailView):
 
     def get_queryset(self):
         queryset = super().get_queryset()
-        org_users = current_org.get_org_users().values_list('id', flat=True)
+        org_users = current_org.get_org_users_and_auditors().values_list('id', flat=True)
         queryset = queryset.filter(id__in=org_users)
         return queryset