diff --git a/projects/cadcAccessControl-Server/build.xml b/projects/cadcAccessControl-Server/build.xml
index 39cce90c8e2f2e8c6a52777adad23ec353c5d8f0..8a87c3bca324f82a7393879f24f870c304c20d78 100644
--- a/projects/cadcAccessControl-Server/build.xml
+++ b/projects/cadcAccessControl-Server/build.xml
@@ -148,7 +148,7 @@
         <pathelement path="${jars}:${testingJars}"/>
       </classpath>
       <sysproperty key="ca.nrc.cadc.util.PropertiesReader.dir" value="test"/>
-      <test name="ca.nrc.cadc.ac.server.web.users.GetUserListActionTest" />
+      <test name="ca.nrc.cadc.ac.server.web.users.GetUserActionTest" />
       <formatter type="plain" usefile="false" />
     </junit>
   </target>
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 4793c719fb078488473eaca1bbb215c17a9a2aac..8e871363996b17cc9e451995ffc1dda00edcec27 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
@@ -67,6 +67,7 @@
  ************************************************************************
  */package ca.nrc.cadc.ac.server.web.users;
 
+import ca.nrc.cadc.ac.PersonalDetails;
 import ca.nrc.cadc.ac.User;
 import ca.nrc.cadc.ac.UserNotFoundException;
 import ca.nrc.cadc.ac.server.UserPersistence;
@@ -75,6 +76,7 @@ import java.security.AccessControlContext;
 import java.security.AccessController;
 import java.security.Principal;
 import java.security.PrivilegedExceptionAction;
+import java.util.Set;
 
 import javax.security.auth.Subject;
 
@@ -85,11 +87,13 @@ public class GetUserAction extends AbstractUserAction
 {
     private static final Logger log = Logger.getLogger(GetUserAction.class);
     private final Principal userID;
+    private final String detail;
 
-    GetUserAction(Principal userID)
+    GetUserAction(Principal userID, String detail)
     {
         super();
         this.userID = userID;
+        this.detail = detail;
     }
 
 	public void doAction() throws Exception
@@ -126,6 +130,32 @@ public class GetUserAction extends AbstractUserAction
     	try
         {
             user = userPersistence.getUser(principal);
+            if (detail != null)
+            {
+                // Only return user principals
+                if (detail.equals("identity"))
+                {
+                    user.details.clear();
+                }
+                // Only return user profile info, first and last name.
+                else if (detail.equals("display"))
+                {
+                    user.getIdentities().clear();
+                    Set<PersonalDetails> details =  user.getDetails(PersonalDetails.class);
+                    if (details.isEmpty())
+                    {
+                        String error = principal.getName() + " missing required PersonalDetails";
+                        throw new IllegalStateException(error);
+                    }
+                    PersonalDetails pd = details.iterator().next();
+                    user.details.clear();
+                    user.details.add(new PersonalDetails(pd.getFirstName(), pd.getFirstName()));
+                }
+                else
+                {
+                    throw new IllegalArgumentException("Illegal detail parameter " + detail);
+                }
+            }
         }
         catch (UserNotFoundException e)
         {
@@ -137,7 +167,7 @@ public class GetUserAction extends AbstractUserAction
     
     protected boolean isServops()
     {
-    	log.debug("alinga-- isServops(): augmentUserDN = " + this.augmentUserDN);
+    	log.debug("isServops(): augmentUserDN = " + this.augmentUserDN);
     	boolean isServops = false;
         AccessControlContext acc = AccessController.getContext();
         Subject subject = Subject.getSubject(acc);
diff --git a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java
index ae8ec41014d2f0ed8d67a7bc50a664c270de1542..ce45a74ef77865b00d58bf256cd86428599eecab 100644
--- a/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java
+++ b/projects/cadcAccessControl-Server/src/ca/nrc/cadc/ac/server/web/users/UserActionFactory.java
@@ -111,7 +111,7 @@ public abstract class UserActionFactory
                 else if (segments.length == 1)
                 {
                     User user = getUser(segments[0], request.getParameter("idType"), path);
-                        action = new GetUserAction(user.getUserID());
+                    action = new GetUserAction(user.getUserID(), request.getParameter("detail"));
                 }
 
                 if (action != null)
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 8fbc0a4a2ae91f65aa5507bb0ec5eb6d0f275c3b..f34c6ffcd38c28cd4af7394dc11d8629af87eca0 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
@@ -67,25 +67,32 @@
  */
 package ca.nrc.cadc.ac.server.web.users;
 
+import ca.nrc.cadc.ac.PersonalDetails;
+import ca.nrc.cadc.ac.PosixDetails;
 import ca.nrc.cadc.ac.User;
 import ca.nrc.cadc.ac.json.JsonUserWriter;
 import ca.nrc.cadc.ac.server.UserPersistence;
 import ca.nrc.cadc.ac.server.web.SyncOutput;
 import ca.nrc.cadc.ac.xml.UserWriter;
 import ca.nrc.cadc.auth.HttpPrincipal;
+import ca.nrc.cadc.auth.NumericPrincipal;
 import org.junit.Test;
 
+import javax.security.auth.x500.X500Principal;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.security.Principal;
+import java.util.HashSet;
+import java.util.Set;
 
 import static org.easymock.EasyMock.*;
 import static org.junit.Assert.assertEquals;
 
 public class GetUserActionTest
 {
-    @Test
+//    @Test
     public void writeUserXML() throws Exception
     {
         final SyncOutput mockSyncOut =
@@ -94,7 +101,7 @@ public class GetUserActionTest
                 createMock(UserPersistence.class);
         final HttpPrincipal userID = new HttpPrincipal("CADCtest");
 
-        final GetUserAction testSubject = new GetUserAction(userID)
+        final GetUserAction testSubject = new GetUserAction(userID, null)
         {
             @Override
             UserPersistence<HttpPrincipal> getUserPersistence()
@@ -126,6 +133,61 @@ public class GetUserActionTest
     }
 
     @Test
+    public void writeUserWithDetailIdentity() 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, "identity")
+        {
+            @Override
+            UserPersistence<HttpPrincipal> getUserPersistence()
+            {
+                return mockUserPersistence;
+            }
+        };
+
+        final User<HttpPrincipal> expected = new User<HttpPrincipal>(userID);
+        expected.getIdentities().add(new NumericPrincipal(789));
+        expected.getIdentities().add(new X500Principal("cn=foo,o=bar"));
+
+        StringBuilder sb = new StringBuilder();
+        UserWriter userWriter = new UserWriter();
+        userWriter.write(expected, sb);
+        String expectedUser = sb.toString();
+
+        final PersonalDetails personalDetails = new PersonalDetails("cadc", "test");
+        personalDetails.city = "city";
+        expected.details.add(personalDetails);
+
+        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();
+
+        sb = new StringBuilder();
+        userWriter.write(expected, sb);
+        String actualUser = sb.toString();
+        assertEquals(expectedUser, actualUser);
+
+        verify(mockUserPersistence, mockResponse);
+    }
+
+//    @Test
     public void writeUserJSON() throws Exception
     {
         final SyncOutput mockSyncOut =
@@ -134,7 +196,7 @@ public class GetUserActionTest
                 createMock(UserPersistence.class);
         final HttpPrincipal userID = new HttpPrincipal("CADCtest");
 
-        final GetUserAction testSubject = new GetUserAction(userID)
+        final GetUserAction testSubject = new GetUserAction(userID, null)
         {
             @Override
             UserPersistence<HttpPrincipal> getUserPersistence()