<!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>Tracking project issues</title>
 </head>

 <body class="docs" onload="self.focus()">
  <div class="docs" id="projectownerissues">
   <h2>Tracking project issues</h2>

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

    <ul>
     <li>
      <a href="/nonav/docs/ProjectOwnerAdmin.html">Project owner administration</a> 

      <ul>
       <li><a href="/nonav/docs/ProjectOwnerEdit.html">Editing and maintaining the Project Home page</a></li>

       <li><a href="/nonav/docs/ProjectOwnerNews.html">Managing project site news</a></li>

       <li><a href="/nonav/docs/ProjectOwnerMembers.html">Adding project members and approving roles</a></li>

       <li><a href="/nonav/docs/ProjectOwnerMailingLists.html">Configuring and managing project mailing lists</a></li>

       <li><a href="/nonav/docs/ProjectOwnerDocuments.html">Managing project documentation</a></li>

       <li><a href="/nonav/docs/ProjectOwnerSource.html">Managing project source code</a></li>

       <li>
        Tracking project issues 

            <ul>
              <li><a href="#adminpermissions">About administrative issue tracking 
                permissions</a></li>
              <li><a href="#adminconfigure">Configuring Issuezilla's administrative 
                options</a></li>
              <li><a href="#admintips">Tips and tricks for issue management</a></li>
              <li><a href="#export">Exporting issues to another project</a></li>
            </ul>
       </li>
	   <li><a href="/nonav/docs/ProjectOwnerCustomStyle.html">Managing custom HTML styling</a></li>
      </ul>
     </li>
    </ul>

    <ul>
     <li><a href="/nonav/docs/ProjectIssues.html">Issue tracking page help</a></li>

     <li><a href="/nonav/docs/ddIssues_EnterModify.html">Entering and modifying issues</a></li>

     <li><a href="/nonav/docs/ddIssues_Query.html">Querying and tracking issues</a></li>

     <li><a href="/nonav/docs/ddIssues_Reports.html">Generating status reports about project issues</a></li>
    </ul>
   </div>

   <h3><a id="adminpermissions" name="adminpermissions">Issue tracking administration</a></h3>

   <p>Because you are a Project Owner, you automatically have administrative permissions in IssueZilla to manage and track your project's issues. Along with the options available to other project members, your view of the <b>Issue Tracking</b> page includes a <b>Configuration Options</b> link that will take to the <strong>Issue tracking configuration parameters for project</strong> page. Almost all administrative options are included on this page. (See "<a href="#adminconfigure">Configuring IssueZilla's administrative options</a>" below for descriptions of the fields you can configure.) The exception to this is the assigned to field. The assigned to field is configurable only by the Host Administrator and may be configured as either a drop down box or a text box in which the user can manually type the name of the user to be assigned. As a drop down box, the user names listed have direct roles in the project.</p>

   <p>Your role of Project Owner gives you the ability to configure almost every element of IssueZilla. Probably the most significant permission you have is the ability to edit the issue tracking permissions of all other users on your project. This can include delegating some of these administrative permissions to other users to help manage and plan the project workload. If one of your project members builds a solid track record of committing issues that get confirmed, this is probably a person who understands the project and the issue tracking system well enough to be granted the "Can confirm an issue" permission. As a project owner, you can and should use IssueZilla to track this kind of information about project participants to help you manage project issues effectively.</p>

   <p>To learn how to assign issue tracking permissions to project members, see "Users" in the next section</p>

   <h3><a id="adminconfigure" name="adminconfigure">Configuring IssueZilla's administrative options</a></h3>

   <p>You can configure <em>Issue Attributes</em> and <em>Operating Parameters</em> from the <strong>Issue tracking configuration parameters for project</strong> page. Below are descriptions of the options that you can configure:</p>

   <dl>
    <dt><strong>Issue Attributes</strong></dt>

    <dd>
     <dl>
      <dt>Add/edit components</dt>

      <dd>
       When a project is created an issue database is created with the name of the project as the default component in IssueZilla. Each component is a unique entity within IssueZilla. All issues must be associated with a component to be created. The component interface allows you to define subcomponents, versions and milestones. 

       <dl>
        <dt>Subcomponents</dt>

        <dd>A subcomponent may be used to define functional areas within the component. For example, for a component called pacman you may have a set of subcomponents with the following titles; user interface, strategy, user documentation, installation, etc. A subcomponent inherits all the characteristics of the parent component. Thus, if you assign a set of version numbers to a component, all subcomponents will receive the same set of versions. A component selection screen that lets you create, define, edit, add, and delete project components and subcomponents.</dd>

        <dt>Versions</dt>

        <dd>To assist in tracking the releases and build cycle of your project you can assign versions to your component. Versions represent a full unit of a release cycle. That is, the version is used to track the process from original design, through development and final release. The version includes the development, QA and release cycles. HINT: to assist in your review process you may want to consider using the same versions as you use to tag unique code sets in CVS.</dd>

        <dt>Milestones</dt>

        <dd>Milestones are significant points in the development process which you may wish to track. For instance you may have design, scoping, development, documentation, QA and release milestones. The milestone field can be used to run reports on the progress of your project.</dd>
       </dl>
      </dd>

      <dt>Add/edit keywords</dt>

      <dd>Allows you to create, define, edit, and delete regular expression keywords to be used for issue tracking groups and queries.</dd>

      <dt>Add/edit platforms</dt>

      <dd>
       Allows you to apply a sort key, mark as Closed, or Delete any of the defaults, or add new platforms. Default platforms are: 

       <ul>
        <li>All (happens on all platform; cross-platform issue)</li>

        <li>DEC</li>

        <li>HP</li>

        <li>Macintosh</li>

        <li>Palm PDA</li>

        <li>PC</li>

        <li>SGI</li>

        <li>SUN</li>

        <li>Other</li>
       </ul>
      </dd>

      <dt>Add/edit operating Systems</dt>

      <dd>Allows you to apply a sort key, mark as Closed, or Delete any of the defaults, or add new operating systems. Default values include most available operating systems.</dd>
     </dl>
    </dd>

    <dt><strong>Operating Parameters</strong></dt>

    <dd>
     <dl>
      <dt>Edit users</dt>

      <dd>Allows you to access the user edit screen either by filtering for specific users or leaving it blank to access the full list of users after clicking the "Submit" button. Clicking on listed user's link displays another edit screen where you can check and uncheck permissions options.</dd>

      <dt>Add/edit groups</dt>

      <dd>Allows you to create, define, and delete groups specifically for issue tracking purposes, and assign project member users to groups. You can make changes to one, several, or all fields and submit them all at once. Your project also includes a default set of groups pertaining to issue tracking permissions.</dd>

      <dt>Edit advanced configuration options</dt>

      <dd>Allows you to edit the values of many of the keys within Issuezilla. This link will take you to the <strong>Edit parameters</strong> page where you can set the issue defaults, organization, appearance, comment triggers, email notifications, and other database options. A definition and directions for setting each key is given on this page.</dd>
      <dd>Note: This page should be handled with care. Checking the <strong>Reset</strong> box on any item will reset it to the default value.</dd>
      
      <dt>Add/edit mimetypes</dt>

      <dd>Allows you to create, define, edit or delete descriptions for attachment uploads.</dd>

      <dt>Add/edit hosts</dt>

      <dd>Allows you to create, edit or delete hosts for issue export.</dd>

      <dt>Edit issue import configuration rules</dt>

      <dd>
       Allows you to set rules and field values to be used when importing issues from another project's database. The following items can be configured: 

       <ul>
        <li>Component</li>

        <li>Subcomponent</li>

        <li>Version</li>

        <li>Milestone</li>

        <li>User resolution</li>

        <li>Importing votes</li>

        <li>Subject prefix for imported issues</li>
       </ul>
      </dd>
     </dl>
    </dd>

    <dt><strong>Run sanity check</strong></dt>

    <dd>Allows you to run an automated process that checks for and identifies any anomalies in your project's issues database, such as conflicting dependencies, committed issue errors, and correct references between issue reporters and user profiles. You can run the sanity check to check for corruption or invalid entries in your issue database.</dd>
   </dl>

   <h3><a id="admintips" name="admintips">Tips and tricks for issue management</a></h3>

   <p>IssueZilla is a powerful tool for managing and tracking your project's development activities down to the fine-grained details. As with most tools, users develop inevitably develop shortcuts and tricks to compensate for particular aspects of the tool, or to tailor it to their specific needs. IssueZilla is no exception.</p>

   <p>What follows is a sampling of several tricks that have proved particularly useful to project managers or users with administrative issue tracking permissions:</p>

   <ul>
    <li>Avoid configuring the same management-level queries repeatedly by creating permanently displayed links to information you use constantly. For example, you can create a page of links for each project member's issue list, and for regularly used milestone or issue status queries.</li>

    <li>Because issues may not be deleted, you can create components or subcomponents named "issue graveyard" or "unknown" to collect dead or no longer applicable issues. IssueZilla's non-delete feature is actually a protective design feature since the ability to track such dead issues can sometimes come in handy, or at least preserve aspects of project history.</li>

    <li>Create a "not determined" milestone for project issues not yet tied to any particular project milestone date or release. Development project objectives and priorities tend to shift dynamically. This lets you identify and hold in reserve those issues affected by your project's evolution.</li>

    <li>Add a pseudo user known as "placeholder" (or some other equally obvious generic identity) who can "own" issues that you are not yet ready or able to assign to specific project members.</li>
   </ul>

<h3><a id="export" name="export">Exporting issues to another project</a></h3>
<p>You can copy issues from one project to another using the issue export/import feature. This function takes a 'snapshot' of an issue in one project, and creates duplicate of that issue in another project. An issue can be exported to a given host only once; the issue is never updated on the importing side once a successful import has occurred. Exporting an issue does not change its state. For example, the issue is not closed when exported. The export gives an issue independent (but cross-referenced) representation in two places.
   
<p>When performing the export operation, there are responsibilities on both the export and the import sides. The exporter is responsible for defining projects or hosts that issues can be exported to, and identifying data that should be included or excluded from the exported version. The importer in turn is responsible for determining whether to accept the issue, and for deciding how to map the data in the issue to data in the importing project.</p>

<h4>Setting up: Exporter</h4>

  <p>Enabled issue exporting by defining one or more hosts to which issues can be exported. On the Issue tracker page, click on <b>Configuration Options</b> and select the <b>Add/edit hosts to export issues to</b> link. This will take you to the<b> Edit export host list</b> page. Enter the hosts to which you want issues to be exported in the fields provided. Hosts should be in URL form, for example <em>https://secureproject.mydomain.net/</em>. Once you have entered the desired host(s), click the <b>Submit</b> button. If you wish to remove a host, simply clear the field and click the submit button again.</p>  
   
<p>Once a host is defined, all users with the <b>Project Issue Tracking - Configure</b> permission will see an <b>Export This Issue</b> button when viewing an issue.</p>
   
<h4>Setting up: Importer</h4>
   
  <p>The importing host must be running SourceCast version 2.0 or greater with at least one project created (to import into), and a user account which will be used to authorize the import. Although it's not necessary to do so for import/export to function, the rules which the importer uses to reconcile incoming data with it's own data can be configured by clicking on <b>Configuration Options</b> and selecting the <b>Edit issue import configuration rules</b> link.
   
<h4>Performing an export</h4>

<p>Once both the importing and exporting sides are appropriately configured, you can perform the export function following these steps:</p>

<ol>
    <li>While viewing the issue you wish to export, click the <b>Export this issue ...</b> button.</li>
   <li>Enter the username and password for the importing user and select any data fields for suppression.</li>
   <li>Click the <b>Export Issue</b> button.</li>
</ol>
<p>If the export was successful, after a moment the issue will be updated with a link to the issue at its imported location.</p>   
   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
 </body>
</html>



