diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java
index 8e871363996b17cc9e451995ffc1dda00edcec27..92a345af5cc7383779cab27f99f37d8819dc8ee0 100644
--- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java
+++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/GetUserAction.java
@@ -149,7 +149,7 @@ public class GetUserAction extends AbstractUserAction
                     }
                     PersonalDetails pd = details.iterator().next();
                     user.details.clear();
-                    user.details.add(new PersonalDetails(pd.getFirstName(), pd.getFirstName()));
+                    user.details.add(new PersonalDetails(pd.getFirstName(), pd.getLastName()));
                 }
                 else
                 {
@@ -167,16 +167,18 @@ public class GetUserAction extends AbstractUserAction
     
     protected boolean isServops()
     {
-    	log.debug("isServops(): augmentUserDN = " + this.augmentUserDN);
     	boolean isServops = false;
         AccessControlContext acc = AccessController.getContext();
         Subject subject = Subject.getSubject(acc);
-        for (Principal principal : subject.getPrincipals())
+        if (subject != null)
         {
-        	if (principal.getName().equals(this.getAugmentUserDN()))
+        	for (Principal principal : subject.getPrincipals())
         	{
-        		isServops = true;
-        		break;
+        		if (principal.getName().equals(this.getAugmentUserDN()))
+        		{
+        			isServops = true;
+        			break;
+        		}
         	}
         }
         
diff --git a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java
index f34c6ffcd38c28cd4af7394dc11d8629af87eca0..7727194981084f8d071205b6861e394b99762e28 100644
--- a/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java
+++ b/projects/cadcAccessControl-Server/test/src/ca/nrc/cadc/ac/server/web/users/GetUserActionTest.java
@@ -89,10 +89,11 @@ import java.util.Set;
 
 import static org.easymock.EasyMock.*;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 public class GetUserActionTest
 {
-//    @Test
+    @Test
     public void writeUserXML() throws Exception
     {
         final SyncOutput mockSyncOut =
@@ -179,15 +180,72 @@ public class GetUserActionTest
         testSubject.setSyncOut(syncOutput);
         testSubject.doAction();
 
-        sb = new StringBuilder();
+        String actualUser = writer.toString();
+
+        assertEquals(expectedUser, actualUser);
+
+        verify(mockUserPersistence, mockResponse);
+    }
+
+    @Test
+    public void writeUserWithDetailDisplay() throws Exception
+    {
+        final HttpServletResponse mockResponse = createMock(HttpServletResponse.class);
+        final UserPersistence<HttpPrincipal> mockUserPersistence =
+            createMock(UserPersistence.class);
+        final HttpPrincipal userID = new HttpPrincipal("CADCtest");
+
+        final GetUserAction testSubject = new GetUserAction(userID, "display")
+        {
+            @Override
+            UserPersistence<HttpPrincipal> getUserPersistence()
+            {
+                return mockUserPersistence;
+            }
+        };
+
+        final User<HttpPrincipal> expected = new User<HttpPrincipal>(userID);
+
+        final PersonalDetails personalDetails = new PersonalDetails("cadc", "test");
+        expected.details.add(personalDetails);
+
+        StringBuilder sb = new StringBuilder();
+        UserWriter userWriter = new UserWriter();
         userWriter.write(expected, sb);
-        String actualUser = sb.toString();
+        String expectedUser = sb.toString();
+
+        Set<PersonalDetails> details = expected.getDetails(PersonalDetails.class);
+        PersonalDetails pd = details.iterator().next();
+        pd.city = "city";
+
+        expected.getIdentities().add(new NumericPrincipal(789));
+        expected.getIdentities().add(new X500Principal("cn=foo,o=bar"));
+
+        final PosixDetails posixDetails = new PosixDetails(123L, 456L, "/dev/null");
+        expected.details.add(posixDetails);
+
+        final Writer writer = new StringWriter();
+        final PrintWriter printWriter = new PrintWriter(writer);
+
+        expect(mockUserPersistence.getUser(userID)).andReturn(expected).once();
+        mockResponse.setHeader("Content-Type", "text/xml");
+        expectLastCall().once();
+        expect(mockResponse.getWriter()).andReturn(printWriter).once();
+
+        replay(mockUserPersistence, mockResponse);
+
+        SyncOutput syncOutput = new SyncOutput(mockResponse);
+        testSubject.setSyncOut(syncOutput);
+        testSubject.doAction();
+
+        String actualUser = writer.toString();
+
         assertEquals(expectedUser, actualUser);
 
         verify(mockUserPersistence, mockResponse);
     }
 
-//    @Test
+    @Test
     public void writeUserJSON() throws Exception
     {
         final SyncOutput mockSyncOut =