<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>Creating and editing user groups</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="domadminusergroups">
   <h2>Creating and editing user groups</h2>

   <div id="toc">
    <ul>
     <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>

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

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

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

       <li>
        Creating and editing user groups 

        <ul>
         <li><a href="#whatis">What is a user group?</a></li>

         <li><a href="#createusergroup">Creating user groups</a></li>

         <li><a href="#editusergroup">Editing user groups</a></li>

         <li><a href="#assign">Assigning roles and permissions to user groups</a></li>
        </ul>
       </li>

       <li><a href="/nonav/docs/DomAdminProjectGroups.html">Creating and editing project groups</a></li>

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

       <li><a href="/nonav/docs/DomAdminAuditLogs.html">Using domain administration tools</a></li>
      </ul>
     </li>
    </ul>
   </div>

   <h3><a id="whatis" name="whatis">What is a user group?</a></h3>

   <p>A user group allows the Domain Administrator to designate a collection of users who share a special set of privileges for designated projects on this site. This lets you assign roles, and the permissions associated with those roles, to a select group of users in a single operation. Roles can also be removed from user groups in the same manner.</p>

   <p>Assigning or removing user group privileges is handled within the context of project groups. More information about this is available in <a href="/nonav/docs/DomAdminProjectGroups.html">Creating and editing project groups</a>. The document you are currently viewing covers how to create and edit user groups.</p>

   <p>As an example of how you might apply the user group feature, suppose your site includes projects which require some users who contribute to projects only for a limited time. You could define a "Contract Project Group" for all those affected projects. Then you could create a "Contractors User Group" and assign modified roles to this group to limit their access and privileges.</p>

   <p>You could also define user groups in alignment with your organizational structure, such as by departments or development teams, then tailor the roles and permissions to suit the types of site activities you want to allow these groups of users.</p>

   <h3><a id="createusergroup" name="createusergroup">Creating user groups</a></h3>

   <p>To create a user group:</p>

   <ul>
    <li>In the "Admin Options" section of your <b>Start Page</b>, click the <i>Administer User Groups</i> link to display the <b>All User Groups</b> page.</li>

    <li>Click the <i>Add New User Group</i> link in the top right corner to display the <b>Add A User Group</b> screen.</li>

    <li>Choose a one-word name to identify this new group. Do not use spaces in the name. Use the description field to provide any additional qualifying information about the group.</li>

    <li>Enter users to be included by login name in the <b><i>Initial Users</i></b> field. Enter one user per line. If you need to look up users, click on the <b><i>Users</i></b> link in the "Administration Tools". This displays the <b>User List</b> screen. Then use your browser's Back button to return to the <b>Add A User Group</b> screen.</li>

    <li>Click the <b>Create Group</b> button to finish.</li>
   </ul>

   <p>After you have submitted the new user group, the <b>All User Groups</b> page displays with the new group added.</p>

   <h3><a id="editusergroup" name="editusergroup">Editing user groups</a></h3>

   <p>If you need to view, add, or remove members from a user group:</p>

   <ul>
    <li>In the "Admin Options" section of your <b>Start Page</b>, click the <i>Administer User Groups</i> link to display the <b>All User Groups</b> page.</li>

    <li>Click on the user group name to display the <b>User Group Edit</b> screen.</li>
   </ul>

   <p>This page lists all users who are included in the selected user group. You can conduct the following actions here:</p>

   <ul>
    <li>Modify the group description.</li>

    <li>View individual user account information by clicking on user names.</li>

    <li>Add more users with the <i>Add New User to Group</i> link which displays the <b>Add Users</b> screen allowing you to make one or more selections. Finish by clicking the <b><i>Add to Group</i></b> button.</li>

    <li>Remove users by placing a checkmark in the "Remove From Group" column, then pressing the <b><i>Remove Elements</i></b> button.</li>

    <li>Remove the entire user group completely using the <i>Delete Group</i> link. (This eradicates only the user group association; it does not delete the individual user accounts in the group.)</li>
   </ul>

   <h3><a id="assign" name="assign">Assigning roles and permissions to user groups</a></h3>

   <p>Because user groups are designed to work in conjunction with project groups, you must assign a particular set of roles and permissions to users in a group en masse within the context of creating and editing a project group. See <a href="/nonav/docs/DomAdminProjectGroups.html#editprojgroups">Editing project groups</a> for more details.</p>

   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>


