diff --git a/ietf/templates/admin/group/group/change_form.html b/ietf/templates/admin/group/group/change_form.html
new file mode 100644
index 000000000..25708b6d0
--- /dev/null
+++ b/ietf/templates/admin/group/group/change_form.html
@@ -0,0 +1,14 @@
+{% extends "admin/change_form.html" %}
+{% load i18n %}
+
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+  <ul class="object-tools">
+  {% ifequal original.type_id "sdo" %}
+  <li><a href="reminder/">SDO Authorized List Reminder</a></li>
+  {% endifequal %}
+  <li><a href="history/" class="historylink">{% trans "History" %}</a></li>
+  {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
+  </ul>
+{% endif %}{% endif %}
+{% endblock %}
diff --git a/ietf/templates/admin/group/group/change_list.html b/ietf/templates/admin/group/group/change_list.html
new file mode 100644
index 000000000..91c6df92e
--- /dev/null
+++ b/ietf/templates/admin/group/group/change_list.html
@@ -0,0 +1,16 @@
+{% extends "admin/change_list.html" %}
+{% load i18n %}
+
+
+{% block object-tools %}
+  {% if has_add_permission %}
+    <ul class="object-tools">
+      <li><a href="reminder/">SDO Authorized List Reminder</a></li>
+      <li>
+        <a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
+          {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
+        </a>
+      </li>
+    </ul>
+  {% endif %}
+{% endblock %}
diff --git a/ietf/templates/admin/group/group/send_sdo_reminder.html b/ietf/templates/admin/group/group/send_sdo_reminder.html
new file mode 100644
index 000000000..8ddf7406e
--- /dev/null
+++ b/ietf/templates/admin/group/group/send_sdo_reminder.html
@@ -0,0 +1,47 @@
+{% extends "admin/base_site.html" %}
+
+{% load i18n admin_modify adminmedia %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />{% endblock %}
+
+{% block bodyclass %}change-form{% endblock %}
+
+{% block breadcrumbs %}{% if not is_popup %}
+<div class="breadcrumbs">
+     <a href="../../../">{% trans "Home" %}</a> &rsaquo;
+     <a href="../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
+     {% if has_change_permission %}<a href="../">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %} &rsaquo; 
+     {% trans "Send reminder" %}
+</div>
+{% endif %}{% endblock %}
+
+{% block content %}<div id="content-main">
+<div>
+<h1>Send a reminder to each SDO Liaison Manager</h1>
+{% if output %}
+<p>
+Reminder sent successfully. See the output of the command:
+</p>
+<pre>
+{{ output }}
+</pre>
+{% else %}
+{% if sdo %}
+<p>
+You can send a reminder to the {{ sdo }} SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of {{ sdo }}</h1>
+</p>
+{% else %}
+<p>
+You can send a reminder to each SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of his SDO</h1>
+</p>
+<p>
+By clicking the 'Send' button you will send a request to <b>all</b> the SDO Liaison Managers. In order to send the request to one SDO Liaison Manager go to the SDO edit page.
+</p>
+{% endif %}
+<form action="" method="post">
+<input type="submit" name="send" value="Send" />
+</form>
+{% endif %}
+</div>
+</div>
+{% endblock %}
diff --git a/ietf/templates/admin/group/sdos/change_form.html b/ietf/templates/admin/group/sdos/change_form.html
new file mode 100644
index 000000000..62dc3d52c
--- /dev/null
+++ b/ietf/templates/admin/group/sdos/change_form.html
@@ -0,0 +1,12 @@
+{% extends "admin/change_form.html" %}
+{% load i18n %}
+
+{% block object-tools %}
+{% if change %}{% if not is_popup %}
+  <ul class="object-tools">
+  <li><a href="reminder/">Update Authorized List Reminder</a></li>
+  <li><a href="history/" class="historylink">{% trans "History" %}</a></li>
+  {% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
+  </ul>
+{% endif %}{% endif %}
+{% endblock %}
diff --git a/ietf/templates/admin/group/sdos/change_list.html b/ietf/templates/admin/group/sdos/change_list.html
new file mode 100644
index 000000000..253752899
--- /dev/null
+++ b/ietf/templates/admin/group/sdos/change_list.html
@@ -0,0 +1,16 @@
+{% extends "admin/change_list.html" %}
+{% load i18n %}
+
+
+{% block object-tools %}
+  {% if has_add_permission %}
+    <ul class="object-tools">
+      <li><a href="reminder/">Update Authorized List Reminder</a></li>
+      <li>
+        <a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">
+          {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
+        </a>
+      </li>
+    </ul>
+  {% endif %}
+{% endblock %}
diff --git a/ietf/templates/admin/group/sdos/send_reminder.html b/ietf/templates/admin/group/sdos/send_reminder.html
new file mode 100644
index 000000000..8ddf7406e
--- /dev/null
+++ b/ietf/templates/admin/group/sdos/send_reminder.html
@@ -0,0 +1,47 @@
+{% extends "admin/base_site.html" %}
+
+{% load i18n admin_modify adminmedia %}
+
+{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/forms.css" />{% endblock %}
+
+{% block bodyclass %}change-form{% endblock %}
+
+{% block breadcrumbs %}{% if not is_popup %}
+<div class="breadcrumbs">
+     <a href="../../../">{% trans "Home" %}</a> &rsaquo;
+     <a href="../../">{{ app_label|capfirst|escape }}</a> &rsaquo; 
+     {% if has_change_permission %}<a href="../">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %} &rsaquo; 
+     {% trans "Send reminder" %}
+</div>
+{% endif %}{% endblock %}
+
+{% block content %}<div id="content-main">
+<div>
+<h1>Send a reminder to each SDO Liaison Manager</h1>
+{% if output %}
+<p>
+Reminder sent successfully. See the output of the command:
+</p>
+<pre>
+{{ output }}
+</pre>
+{% else %}
+{% if sdo %}
+<p>
+You can send a reminder to the {{ sdo }} SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of {{ sdo }}</h1>
+</p>
+{% else %}
+<p>
+You can send a reminder to each SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of his SDO</h1>
+</p>
+<p>
+By clicking the 'Send' button you will send a request to <b>all</b> the SDO Liaison Managers. In order to send the request to one SDO Liaison Manager go to the SDO edit page.
+</p>
+{% endif %}
+<form action="" method="post">
+<input type="submit" name="send" value="Send" />
+</form>
+{% endif %}
+</div>
+</div>
+{% endblock %}
diff --git a/redesign/group/admin.py b/redesign/group/admin.py
index 46f324cd7..0a4308446 100644
--- a/redesign/group/admin.py
+++ b/redesign/group/admin.py
@@ -1,13 +1,97 @@
 from django.contrib import admin
+from django import template
+from django.utils.functional import update_wrapper
+from django.contrib.admin.util import unquote
+from django.core.exceptions import PermissionDenied
+from django.core.management import load_command_class
+from django.http import Http404
+from django.shortcuts import render_to_response
+from django.utils.encoding import force_unicode
+from django.utils.functional import update_wrapper
+from django.utils.html import escape
+from django.utils.translation import ugettext as _
+
 from models import *
 
 class GroupAdmin(admin.ModelAdmin):
     list_display = ["acronym", "name", "type"]
+    list_display_links = ["acronym", "name"]
+    list_filter = ["type"]
     search_fields = ["name"]
     ordering = ["name"]
-    raw_id_fields = ["charter"]
+    raw_id_fields = ["charter", "parent", "ad"]
+
+    def get_urls(self):
+        from django.conf.urls.defaults import patterns, url
+
+        def wrap(view):
+            def wrapper(*args, **kwargs):
+                return self.admin_site.admin_view(view)(*args, **kwargs)
+            return update_wrapper(wrapper, view)
+
+        info = self.model._meta.app_label, self.model._meta.module_name
+
+        urls = patterns('',
+            url(r'^reminder/$',
+                wrap(self.send_reminder),
+                name='%s_%s_reminder' % info),
+            url(r'^(.+)/reminder/$',
+                wrap(self.send_one_reminder),
+                name='%s_%s_one_reminder' % info),
+            )
+        urls += super(GroupAdmin, self).get_urls()
+        return urls
+
+    def send_reminder(self, request, sdo=None):
+        opts = self.model._meta
+        app_label = opts.app_label
+
+        output = None
+        sdo_pk = sdo and sdo.pk or None
+        if request.method == 'POST' and request.POST.get('send', False):
+            command = load_command_class('ietf.liaisons', 'remind_update_sdo_list')
+            output=command.handle(return_output=True, sdo_pk=sdo_pk)
+            output='\n'.join(output)
+
+        context = {
+            'opts': opts,
+            'has_change_permission': self.has_change_permission(request),
+            'app_label': app_label,
+            'output': output,
+            'sdo': sdo,
+            }
+        return render_to_response('admin/group/group/send_sdo_reminder.html',
+                                  context,
+                                  context_instance = template.RequestContext(request, current_app=self.admin_site.name),
+                                 )
+
+    def send_one_reminder(self, request, object_id):
+        model = self.model
+        opts = model._meta
+
+        try:
+            obj = self.queryset(request).get(pk=unquote(object_id))
+        except model.DoesNotExist:
+            obj = None
+
+        if not self.has_change_permission(request, obj):
+            raise PermissionDenied
+
+        if obj is None:
+            raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)})
+
+        return self.send_reminder(request, sdo=obj)
+    
 
 admin.site.register(Group, GroupAdmin)
 admin.site.register(GroupHistory)
 
-admin.site.register(Role)
+class RoleAdmin(admin.ModelAdmin):
+    list_display = ["name", "email", "group"]
+    list_display_links = ["name"]
+    search_fields = ["name", "email"]
+    list_filter = ["name"]
+    ordering = ["id"]
+    raw_id_fields = ["email", "group"]
+
+admin.site.register(Role, RoleAdmin)
diff --git a/redesign/group/models.py b/redesign/group/models.py
index 2187e6ce7..bf249a460 100644
--- a/redesign/group/models.py
+++ b/redesign/group/models.py
@@ -87,7 +87,7 @@ class Role(models.Model):
     email = models.ForeignKey(Email, help_text="Email address used by person for this role")
     auth = models.CharField(max_length=255, blank=True) # unused?
     def __unicode__(self):
-        return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym)
+        return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym or self.group.name)
 
     
 class RoleHistory(models.Model):