<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
  <div class="docs" id="domadminauditlogs">
   <h2>Using domain administration tools</h2>

   <div class="toc">
    <h3>Help for domain administration: Index</h3>

    <ul>
     <li>
      <a href="DomAdminOverview.html">Domain administration overview</a> 

      <ul>
       <li><a href="DomAdminAddUsers.html">Adding and editing user accounts</a></li>

       <li><a href="DomAdminRoles.html">Administering roles and permissions</a></li>

       <li><a href="DomAdminUserGroups.html">Creating and editing user groups</a></li>

       <li><a href="DomAdminProjectGroups.html">You are here: Creating and editing project groups</a></li>

       <li><a href="DomAdminProjectApproval.html">Approving, disapproving, or deferring projects</a></li>

       <li>
        <strong>You are here:</strong> Using domain administration tools 

        <ul>
         <li><b><a href="#auditlog">About the administrative audit log</a></b></li>

         <li><b><a href="#monitorsessions">Monitoring user sessions</a></b></li>
        </ul>
       </li>
      </ul>
     </li>
    </ul>
   </div>

   <div class="courtesylinks">
    <p><a href="/servlets/HelpTOC">Back to main Help index</a></p>
   </div>

   <h3><a id="auditlog" name="auditlog">About the administrative audit log</a></h3>

   <p>All site-level administrative actions are logged and you can view this information using the <i>Administer Audit Logs</i> link in the "Admin Options" section of your <b>Start Page</b>. The Audit Log keeps a cumulative record of key administrative events in your domain. Optionally you can append notes to log entries preserve more detailed historical information.</p>

   <p>The Audit Log displays 50 entries per page identified by date/time, person, and location, logging the most recent actions in the first page displayed. The log may be filtered on any of the fields displayed to extrapolate specific site information. For example, if you are not the only domain administrator on your site, the log can provide a useful reference of the administrative actions conducted by each person. Also, log actions for specific projects yield detailed histories of the project beginning from its inception.</p>

   <p>Logged domain admin actions include:</p>

   <ul>
    <li>user additions</li>

    <li>user deletions</li>

    <li>user edits</li>

    <li>project creation</li>

    <li>project edits</li>

    <li>project deletion</li>

    <li>granting a role in a project</li>

    <li>revoking a role in a project</li>

    <li>project group creation</li>

    <li>project group edit (adding or removing a project or other attributes)</li>

    <li>project group delete</li>

    <li>user group creation</li>

    <li>user group edit (adding or deleting members or other attributes)</li>

    <li>user group deletion</li>

    <li>starting or stopping task runner</li>

    <li>role creation</li>

    <li>role edit</li>

    <li>role delete</li>

    <li>permission creation, edit, delete</li>

    <li>resource scope creation, edit, delete</li>

    <li>operations from StaticUtils page</li>
   </ul>

   <h3><a id="monitorsessions" name="monitorsessions">Monitoring user sessions</a></h3>

   <p>You can also view about currently site activity at any given time by clicking the <i>Active User Sessions</i> link in the "Admin Options" section of your <b>Start Page</b>. This provides a snapshot view of who is currently logged in to your site. Although this information is not logged or stored long term, periodically viewing active sessions may provide some insight into who is using your site.</p>

   <p>If you require more formal user statistical information, you must contact this site's host administrator.</p>

   <div class="courtesylinks">
    <p><a href="DomAdminOverview.html">Back to help for domain administration</a><br />
    <a href="/servlets/HelpTOC">Back to main Help index</a></p>
   </div>
  </div>
 


</body>
</html>

