diff --git a/gracedb/api/v1/superevents/serializers.py b/gracedb/api/v1/superevents/serializers.py
index 8fc2b212199b4683e3113a05508246d259ca5f6c..e1b40a53e024fc7dabe5900ecda4c3a2911e7c7a 100644
--- a/gracedb/api/v1/superevents/serializers.py
+++ b/gracedb/api/v1/superevents/serializers.py
@@ -297,8 +297,7 @@ class SupereventLogSerializer(serializers.ModelSerializer):
     self = serializers.SerializerMethodField(read_only=True)
     created = serializers.DateTimeField(format=settings.GRACE_STRFTIME_FORMAT,
         read_only=True)
-    issuer = serializers.SlugRelatedField(slug_field='username',
-        read_only=True)
+    issuer = serializers.SerializerMethodField(read_only=True)
     tag_names = serializers.SlugRelatedField(slug_field='name', many=True,
         source='tags', read_only=True)
     file = serializers.SerializerMethodField(read_only=True)
@@ -330,6 +329,16 @@ class SupereventLogSerializer(serializers.ModelSerializer):
             args=[obj.superevent.superevent_id, obj.N],
             request=self.context.get('request', None))
 
+    def get_issuer(self, obj):
+        # Show full name for web interface views (fetched via AJAX), unless
+        # it's blank - then show username.  Outside of the web view, show the
+        # username.
+        request = self.context.get('request', None)
+        user = obj.issuer
+        if (request and request.is_ajax()):
+            return (user.get_full_name() or user.get_username())
+        return user.get_username()
+
     def get_file(self, obj):
         link = None
         if obj.filename:
@@ -601,8 +610,7 @@ class SupereventEMObservationSerializer(serializers.ModelSerializer):
                           'same length.'),
     }
     # Read only fields
-    submitter = serializers.SlugRelatedField(slug_field='username',
-        read_only=True)
+    submitter = serializers.SerializerMethodField(read_only=True)
     created = serializers.DateTimeField(format=settings.GRACE_STRFTIME_FORMAT,
         read_only=True)
     footprint_count = serializers.SerializerMethodField(read_only=True)
@@ -649,6 +657,16 @@ class SupereventEMObservationSerializer(serializers.ModelSerializer):
     def get_footprint_count(self, obj):
         return obj.emfootprint_set.count()
 
+    def get_submitter(self, obj):
+        # Show full name for web interface views (fetched via AJAX), unless
+        # it's blank - then show username.  Outside of the web view, show the
+        # username.
+        request = self.context.get('request', None)
+        user = obj.submitter
+        if (request and request.is_ajax()):
+            return (user.get_full_name() or user.get_username())
+        return user.get_username()
+
     def validate(self, data):
         data = super(SupereventEMObservationSerializer, self).validate(data)
         ra_list = data.get('ra_list')
diff --git a/gracedb/events/view_utils.py b/gracedb/events/view_utils.py
index 1db5ca57ef7d1512ec7e69f71013f38892dbd071..fd994a31b5d7ce9e9adaa7cd6e4d03159e4ac35b 100644
--- a/gracedb/events/view_utils.py
+++ b/gracedb/events/view_utils.py
@@ -393,24 +393,19 @@ def eventLogToDict(log, request=None):
     # This is purely for convenience in working with the web interface.
     tag_names = [tag.name for tag in log.tags.all() ];
 
-    if len(log.issuer.last_name):
-        display_name = "%s %s" % (log.issuer.first_name, log.issuer.last_name)
-    else:
-        display_name = log.issuer.username
-
-    # Not sure why we need to do this; changing to just be username
-    issuer_info = log.issuer.username
-    #issuer_info = {
-    #    "username": log.issuer.username,
-    #    "display_name": display_name,
-    #}
+    # User display name
+    # Show full name for web interface views (fetched via AJAX), unless it's
+    # blank, then show username.  Show username outside of web view.
+    user_display = log.issuer.get_username()
+    if (request and request.is_ajax()):
+        user_display = log.issuer.get_full_name() or log.issuer.get_username()
 
     return {
                 "N"            : log.N,
                 "comment"      : log.comment,
                 "created"      : log.created.strftime(
                       settings.GRACE_STRFTIME_FORMAT),
-                "issuer"       : issuer_info,
+                "issuer"       : user_display,
                 "filename"     : log.filename,
                 "file_version" : log.file_version,
                 "tag_names"    : tag_names,
@@ -471,26 +466,32 @@ def embbEventLogToDict(eel, request=None):
 
 # EMObservation serializer.
 def emObservationToDict(emo, request=None):
-      uri = api_reverse("events:emobservation-detail",
-          args=[emo.event.graceid(), emo.N],
-          request=request)
-      
-      return {
-                  "N"               : emo.N,
-                  "footprint_count" : emo.emfootprint_set.count(),
-                  "self"            : uri,
-                  "created"         : emo.created.strftime(
-                      settings.GRACE_STRFTIME_FORMAT),
-                  "submitter"       : emo.submitter.username,
-                  "group"           : emo.group.name,
-                  "comment"         : emo.comment,                  
-  
-                  "ra"       : emo.ra,
-                  "dec"      : emo.dec,
-                  "raWidth"  : emo.raWidth,
-                  "decWidth" : emo.decWidth,
-                  "footprints" : [ emFootprintToDict(emf) for emf in emo.emfootprint_set.all()]
-              }
+    uri = api_reverse("events:emobservation-detail",
+        args=[emo.event.graceid(), emo.N], request=request)
+
+    # User display name
+    # Show full name for web interface views (fetched via AJAX), unless it's
+    # blank, then show username.  Show username outside of web view.
+    user_display = emo.submitter.get_username()
+    if (request and request.is_ajax()):
+        user_display = emo.submitter.get_full_name() or \
+            emo.submitter.get_username()
+
+    return {
+        "N": emo.N,
+        "footprint_count": emo.emfootprint_set.count(),
+        "self": uri,
+        "created": emo.created.strftime(settings.GRACE_STRFTIME_FORMAT),
+        "submitter": user_display,
+        "group": emo.group.name,
+        "comment": emo.comment,
+        "ra": emo.ra,
+        "dec": emo.dec,
+        "raWidth": emo.raWidth,
+        "decWidth": emo.decWidth,
+        "footprints": [emFootprintToDict(emf) for emf in
+            emo.emfootprint_set.all()]
+    }
 
 # EMFootprint serializer
 def emFootprintToDict(emf, request=None):