<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE entitymodel PUBLIC "-//OFBiz//DTD Entity Model//EN" "http://www.ofbiz.org/dtds/entitymodel.dtd">

<entitymodel>
    <title>Entity Model for JIRA</title>
    <description>None</description>
    <copyright>Copyright (c) 2002-2006 Atlassian</copyright>
    <author>The Atlassian Dev Team</author>
    <version>1.0</version>

    <!-- sequence generator table -->
    <entity entity-name="SequenceValueItem" table-name="SEQUENCE_VALUE_ITEM" package-name="">
        <field name="seqName" type="id-long-ne"></field>
        <field name="seqId" type="numeric"></field>
        <prim-key field="seqName"/>
    </entity>


    <!-- OSUser implementation -->
    <entity entity-name="OSUser" table-name="userbase" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="username" type="long-varchar"/>
        <field name="passwordHash" type="long-varchar"/>
        <prim-key field="id"/>

        <index name="osuser_name">
            <index-field name="name"/>
        </index>
    </entity>

    <entity entity-name="OSMembership" table-name="membershipbase" package-name="">
        <field name="id" type="numeric"/>
        <field name="userName" type="long-varchar"/>
        <field name="groupName" type="long-varchar"/>
        <prim-key field="id"/>

        <index name="mshipbase_user">
            <index-field name="userName"/>
        </index>

        <index name="mshipbase_group">
            <index-field name="groupName"/>
        </index>
    </entity>

    <entity entity-name="OSGroup" table-name="groupbase" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" col-name="groupname" type="long-varchar"/>
        <prim-key field="id"/>

        <index name="osgroup_name">
            <index-field name="name"/>
        </index>
    </entity>

    <!-- External User Management -->
    <entity entity-name="ExternalEntity" table-name="external_entities" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" type="long-varchar"/>
        <field name="type" col-name="entitytype" type="long-varchar"/>
        <prim-key field="id"/>

        <index name="ext_entity_name">
            <index-field name="name"/>
        </index>
    </entity>

    <!-- PropertySet implementation -->
    <entity entity-name="OSPropertyEntry" table-name="propertyentry" package-name="">
        <field name="id" type="numeric"/>

        <field name="entityName" type="long-varchar"/>
        <field name="entityId" type="numeric"/>
        <field name="propertyKey" type="long-varchar"/>
        <field name="type" col-name="propertytype" type="integer"/>
        <prim-key field="id"/>
        <!-- entityName and propertyKey have very few unique values - there is no value in including them-->
        <index name="osproperty_all">
            <index-field name="entityId"/>
        </index>

        <!--  It would be nice to use the index below instead of the one above. However MySQL does not allow to index more than 500 characters.
              As entityName and propertyKey are both 255 characters each (long-varchar for MySQl is 255 chars) the index goes over the 500 limit. -->
        <!--        <index name="osproperty_key">-->
        <!--            <index-field name="entityName"/>-->
        <!--            <index-field name="entityId"/>-->
        <!--            <index-field name="propertyKey"/>-->
        <!--        </index>-->
    </entity>

    <entity entity-name="OSPropertyString" table-name="propertystring" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="very-long"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSPropertyText" table-name="propertytext" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="very-long"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSPropertyDate" table-name="propertydate" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="date-time"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSPropertyData" table-name="propertydata" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="blob"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSPropertyDecimal" table-name="propertydecimal" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="floating-point"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSPropertyNumber" table-name="propertynumber" package-name="">
        <field name="id" type="numeric"/>
        <field name="value" col-name="propertyvalue" type="numeric"/>
        <prim-key field="id"/>
    </entity>

    <!-- OSWorkflow entities -->
    <entity entity-name="OSWorkflowEntry" table-name="OS_WFENTRY" package-name="">
        <field name="id" col-name="ID" type="numeric"/>
        <field name="name" col-name="NAME" type="long-varchar"/>
        <!-- The column is no longer used as of workflow 2.6 -->
        <field name="initialized" col-name="INITIALIZED" type="integer"/>
        <!-- This column replaced the 'INITIALIZED' column -->
        <field name="state" col-name="STATE" type="integer"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSCurrentStep" table-name="OS_CURRENTSTEP" package-name="">
        <field name="id" col-name="ID" type="numeric"/>
        <field name="entryId" col-name="ENTRY_ID" type="numeric"/>
        <field name="stepId" col-name="STEP_ID" type="integer"/>
        <field name="actionId" col-name="ACTION_ID" type="integer"/>
        <field name="owner" col-name="OWNER" type="short-varchar"/>
        <field name="startDate" col-name="START_DATE" type="date-time"/>
        <field name="dueDate" col-name="DUE_DATE" type="date-time"/>
        <field name="finishDate" col-name="FINISH_DATE" type="date-time"/>
        <field name="status" col-name="STATUS" type="short-varchar"/>
        <field name="caller" col-name="CALLER" type="short-varchar"/>
        <prim-key field="id"/>

        <relation type="one" title="Related" rel-entity-name="Issue">
            <key-map field-name="entryId" rel-field-name="workflowId"/>
        </relation>
        <index name="wf_entryid">
            <index-field name="entryId"/>
        </index>
    </entity>

    <entity entity-name="OSHistoryStep" table-name="OS_HISTORYSTEP" package-name="">
        <field name="id" col-name="ID" type="numeric"/>
        <field name="entryId" col-name="ENTRY_ID" type="numeric"/>
        <field name="stepId" col-name="STEP_ID" type="integer"/>
        <field name="actionId" col-name="ACTION_ID" type="integer"/>
        <field name="owner" col-name="OWNER" type="short-varchar"/>
        <field name="startDate" col-name="START_DATE" type="date-time"/>
        <field name="dueDate" col-name="DUE_DATE" type="date-time"/>
        <field name="finishDate" col-name="FINISH_DATE" type="date-time"/>
        <field name="status" col-name="STATUS" type="short-varchar"/>
        <field name="caller" col-name="CALLER" type="short-varchar"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="OSCurrentStepPrev" table-name="OS_CURRENTSTEP_PREV" package-name="">
        <field name="id" col-name="ID" type="numeric"/>
        <field name="previousId" col-name="PREVIOUS_ID" type="numeric"/>
        <prim-key field="id"/>
        <prim-key field="previousId"/>
    </entity>

    <entity entity-name="OSHistoryStepPrev" table-name="OS_HISTORYSTEP_PREV" package-name="">
        <field name="id" col-name="ID" type="numeric"/>
        <field name="previousId" col-name="PREVIOUS_ID" type="numeric"/>
        <prim-key field="id"/>
        <prim-key field="previousId"/>
    </entity>

    <!-- JIRA Entities -->
    <entity entity-name="ListenerConfig" table-name="listenerconfig" package-name="">
        <field name="id" type="numeric"/>
        <field name="clazz" type="long-varchar"/>
        <field name="name" col-name="listenername" type="long-varchar"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="ServiceConfig" table-name="serviceconfig" package-name="">
        <field name="id" type="numeric"/>
        <field name="time" type="numeric" col-name="delaytime"/>
        <field name="clazz" type="long-varchar"/>
        <field name="name" col-name="servicename" type="long-varchar"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="Project" table-name="project" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" col-name="pname" type="long-varchar"/>
        <field name="url" type="long-varchar"/>
        <field name="lead" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="key" col-name="pkey" type="long-varchar"/>
        <field name="counter" col-name="pcounter" type="numeric"/>
        <field name="assigneetype" type="numeric"/>
        <prim-key field="id"/>
        <relation type="many" title="Child" rel-entity-name="Component">
            <key-map field-name="id" rel-field-name="project"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="Version">
            <key-map field-name="id" rel-field-name="project"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="project"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="SearchRequest">
            <key-map field-name="id" rel-field-name="project"/>
        </relation>
    </entity>

    <entity entity-name="Version" table-name="projectversion" package-name="">
        <field name="id" type="numeric"/>
        <field name="project" type="numeric"/>
        <field name="name" col-name="vname" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="sequence" type="numeric"/>
        <field name="released" type="very-short"/>
        <field name="archived" type="very-short"/>
        <field name="url" type="long-varchar"/>
        <field name="releasedate" type="date-time"/>
        <prim-key field="id"/>
        <relation type="one" title="Parent" rel-entity-name="Project">
            <key-map field-name="project" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="Component" table-name="component" package-name="">
        <field name="id" type="numeric"/>
        <field name="project" type="numeric"/>
        <field name="name" col-name="cname" type="long-varchar"/>
        <field name="description" col-name="description" type="very-long"/>
        <field name="url" type="long-varchar"/>
        <field name="lead" type="long-varchar"/>
        <field name="assigneetype" type="numeric"/>
        <prim-key field="id"/>
        <relation type="one" title="Parent" rel-entity-name="Project">
            <key-map field-name="project" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="ProjectCategory" table-name="projectcategory" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" col-name="cname" type="long-varchar"/>
        <field name="description" col-name="description" type="very-long"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="Issue" table-name="jiraissue" package-name="">
        <field name="id" type="numeric"/>

        <field name="key" col-name="pkey" type="long-varchar"/>

        <field name="project" type="numeric"/>

        <field name="reporter" type="long-varchar"/>
        <field name="assignee" type="long-varchar"/>

        <field name="type" col-name="issuetype" type="long-varchar"/>
        <field name="summary" type="long-varchar"/>
        <field name="description" type="extremely-long"/>
        <field name="environment" type="extremely-long"/>
        <field name="priority" type="long-varchar"/>
        <field name="resolution" type="long-varchar"/>
        <field name="status" col-name="issuestatus" type="long-varchar"/>
        <field name="created" type="date-time"/>
        <field name="updated" type="date-time"/>
        <field name="duedate" type="date-time"/>

        <field name="votes" type="numeric"/>
        <field name="timeoriginalestimate" type="numeric"/>
        <field name="timeestimate" type="numeric"/>
        <field name="timespent" type="numeric"/>

        <field name="workflowId" type="numeric"/>
        <field name="security" type="numeric"/>

        <!-- deprecated fields - do not use -->
        <field name="fixfor" type="numeric"/>
        <field name="component" type="numeric"/>


        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Project">
            <key-map field-name="project" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="Action">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="Worklog">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="FileAttachment">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>
        <relation type="many" title="Source" rel-entity-name="IssueLink">
            <key-map field-name="id" rel-field-name="source"/>
        </relation>
        <relation type="many" title="Destination" rel-entity-name="IssueLink">
            <key-map field-name="id" rel-field-name="destination"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="CustomFieldValue">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="ChangeGroup">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="SchemeIssueSecurityLevels">
            <key-map field-name="security" rel-field-name="id"/>
        </relation>

        <relation type="one" title="Related" rel-entity-name="OSWorkflowEntry">
            <key-map field-name="workflowId" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Related" rel-entity-name="OSCurrentStep">
            <key-map field-name="workflowId" rel-field-name="entryId"/>
        </relation>
        <relation type="one" title="Child" rel-entity-name="TrackbackPing">
            <key-map field-name="id" rel-field-name="issue"/>
        </relation>

        <index name="issue_key">
            <index-field name="key"/>
        </index>
        <index name="issue_proj_status">
            <index-field name="project"/>
            <index-field name="status"/>
        </index>
        <index name="issue_assignee">
            <index-field name="assignee"/>
        </index>
        <index name="issue_workflow">
            <index-field name="workflowId"/>
        </index>
    </entity>

    <entity entity-name="Action" table-name="jiraaction" package-name="">
        <field name="id" type="numeric"/>

        <field name="issue" col-name="issueid" type="numeric"/>

        <field name="author" type="long-varchar"/>
        <field name="type" col-name="actiontype" type="long-varchar"/>
        <field name="level" col-name="actionlevel" type="long-varchar"/>
        <field name="rolelevel" col-name="rolelevel" type="numeric"/>
        <field name="body" col-name="actionbody" type="extremely-long"/>
        <field name="created" type="date-time"/>
        <field name="updateauthor" type="long-varchar"/>
        <field name="updated" type="date-time"/>

        <!-- an arbitrary number that can be attached to actions used for time log -->
        <field name="numvalue" col-name="actionnum" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>

        <!-- As actions are usually selected by type for a specific issue create a multi-column index -->
        <index name="action_issue">
            <index-field name="issue"/>
            <index-field name="type"/>
        </index>
    </entity>

    <entity entity-name="Worklog" table-name="worklog" package-name="">
        <field name="id" type="numeric"/>

        <field name="issue" col-name="issueid" type="numeric"/>

        <field name="author" type="long-varchar"/>
        <field name="grouplevel" col-name="grouplevel" type="long-varchar"/>
        <field name="rolelevel" col-name="rolelevel" type="numeric"/>
        <field name="body" col-name="worklogbody" type="extremely-long"/>
        <field name="created" type="date-time"/>
        <field name="updateauthor" type="long-varchar"/>
        <field name="updated" type="date-time"/>
        <field name="startdate" type="date-time"/>
        <field name="timeworked" col-name="timeworked" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>

        <index name="worklog_issue">
            <index-field name="issue"/>
        </index>
    </entity>

    <entity entity-name="FileAttachment" table-name="fileattachment" package-name="">
        <field name="id" type="numeric"/>

        <field name="issue" col-name="issueid" type="numeric"/>
        <field name="mimetype" type="long-varchar"/>
        <field name="filename" type="long-varchar"/>
        <field name="created" type="date-time"/>
        <field name="filesize" type="numeric"/>
        <field name="author" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>

        <!-- index 'fileattachment_issueid' -->
        <index name="attach_issue">
            <index-field name="issue"/>
        </index>
    </entity>


    <entity entity-name="SearchRequest" table-name="searchrequest" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="filtername" type="long-varchar"/>
        <field name="author" col-name="authorname" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="user" col-name="username" type="long-varchar"/>
        <field name="group" col-name="groupname" type="long-varchar"/>
        <field name="project" col-name="projectid" type="numeric"/>
        <field name="request" col-name="reqcontent" type="very-long"/>
        <field name="favCount" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Project">
            <key-map field-name="project" rel-field-name="id"/>
        </relation>

        <index name="sr_author">
            <index-field name="author"/>
        </index>
    </entity>

    <entity entity-name="IssueLinkType" table-name="issuelinktype" package-name="">
        <field name="id" type="numeric"/>

        <!-- the name of the link type -->
        <field name="linkname" type="long-varchar"/>

        <!-- a description of the 'forward' link -->
        <field name="inward" type="long-varchar"/>

        <!-- a description of the 'backward' link -->
        <field name="outward" type="long-varchar"/>

        <!-- a type of the link -->
        <field name="style" col-name="pstyle" type="short-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Child" rel-entity-name="IssueLink">
            <key-map field-name="id" rel-field-name="linktype"/>
        </relation>

        <index name="linktypename">
            <index-field name="linkname"/>
        </index>

        <index name="linktypestyle">
            <index-field name="style"/>
        </index>
    </entity>

    <entity entity-name="IssueLink" table-name="issuelink" package-name="">
        <field name="id" type="numeric"/>

        <!-- the name of the link type -->
        <field name="linktype" type="numeric"/>

        <!-- the id of the source issue -->
        <field name="source" type="numeric"/>

        <!-- the id of the destination issue -->
        <field name="destination" type="numeric"/>

        <!-- Used to order links of the same 'style' e.g. sub-tasks -->
        <field name="sequence" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="IssueLinkType">
            <key-map field-name="linktype" rel-field-name="id"/>
        </relation>

        <relation type="one" title="Source" rel-entity-name="Issue">
            <key-map field-name="source" rel-field-name="id"/>
        </relation>

        <relation type="one" title="Destination" rel-entity-name="Issue">
            <key-map field-name="destination" rel-field-name="id"/>
        </relation>

        <index name="issuelink_src">
            <index-field name="source"/>
        </index>

        <index name="issuelink_dest">
            <index-field name="destination"/>
        </index>

        <index name="issuelink_type">
            <index-field name="linktype"/>
        </index>
    </entity>

    <entity entity-name="TrackbackPing" table-name="trackback_ping" package-name="">
        <field name="id" type="numeric"/>
        <field name="issue" type="numeric"/>
        <field name="url" type="long-varchar"/>
        <field name="title" type="long-varchar"/>
        <field name="blogname" type="long-varchar"/>
        <field name="excerpt" type="long-varchar"/>
        <field name="created" type="date-time"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>

    </entity>


    <!-- an entity to represent custom priorities -->
    <entity entity-name="Priority" table-name="priority" package-name="">
        <!--
            The ID of this priority, usually just an integer.
            It is a varchar field for a) backwards compatibility and b) data import from other systems.
            This means the PK must be created manually.
        -->
        <field name="id" type="short-varchar"/>

        <!-- the sequence of this priority. 1 is high, > 1 is low.-->
        <field name="sequence" type="numeric"/>

        <!-- the name of this priority -->
        <field name="name" col-name="pname" type="short-varchar"/>

        <!-- a description of this priority -->
        <field name="description" type="very-long"/>

        <!-- relative URL of an icon for this priority - must be 16x16 -->
        <field name="iconurl" type="long-varchar"/>

        <!-- hex string or the color for this priority -->
        <field name="statusColor" type="short-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="priority"/>
        </relation>
    </entity>

    <!-- an entity to represent custom resolutions -->
    <entity entity-name="Resolution" table-name="resolution" package-name="">
        <!--
            The ID of this resolution, usually just an integer.
            It is a varchar field for a) backwards compatibility and b) data import from other systems.
            This means the PK must be created manually.
        -->
        <field name="id" type="short-varchar"/>

        <!-- the sequence of this resolution. 1 is high, > 1 is low.-->
        <field name="sequence" type="numeric"/>

        <!-- the name of this resolution -->
        <field name="name" col-name="pname" type="short-varchar"/>

        <!-- a description of this resolution -->
        <field name="description" type="very-long"/>

        <!-- relative URL of an icon for this resolution - must be 16x16 - not used at the moment -->
        <field name="iconurl" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="resolution"/>
        </relation>
    </entity>

    <!-- an entity to represent custom issue types -->
    <entity entity-name="IssueType" table-name="issuetype" package-name="">
        <!--
            The ID of this type, usually just an integer.
            It is a varchar field for a) backwards compatibility and b) data import from other systems.
            This means the PK must be created manually.
        -->
        <field name="id" type="short-varchar"/>

        <!-- the sequence of this type. 1 is high, > 1 is low.-->
        <field name="sequence" type="numeric"/>

        <!-- the name of this issue type -->
        <field name="name" col-name="pname" type="short-varchar"/>

        <!-- the 'type' of this issue type -->
        <field name="style" col-name="pstyle" type="short-varchar"/>

        <!-- a description of this issue type -->
        <field name="description" type="very-long"/>

        <!-- relative URL of an icon for this issue type - must be 16x16 -->
        <field name="iconurl" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="type"/>
        </relation>

        <relation type="many" title="Related" rel-entity-name="FieldConfigSchemeIssueType">
            <key-map field-name="id" rel-field-name="issuetype"/>
        </relation>
    </entity>

    <!-- an entity to represent issue status -->
    <entity entity-name="Status" table-name="issuestatus" package-name="">
        <!--
            The ID of this resolution, usually just an integer.
            It is a varchar field for a) backwards compatibility and b) data import from other systems.
            This means the PK must be created manually.
        -->
        <field name="id" type="short-varchar"/>

        <!-- the sequence of this status. 1 is high, > 1 is low.-->
        <field name="sequence" type="numeric"/>

        <!-- the name of this status -->
        <field name="name" col-name="pname" type="short-varchar"/>

        <!-- a description of this status -->
        <field name="description" type="very-long"/>

        <!-- relative URL of an icon for this status - must be 16x16 -->
        <field name="iconurl" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="status"/>
        </relation>
    </entity>


    <!-- =========================================================================================================== -->
    <!--                                                                                         Custom Field Tables -->
    <!-- =========================================================================================================== -->

    <!-- an entity to represent a custom field -->
    <entity entity-name="CustomField" table-name="customfield" package-name="">
        <field name="id" type="numeric"/>

        <field name="customfieldtypekey" type="long-varchar" />
        <field name="customfieldsearcherkey" type="long-varchar" />

        <field name="name" col-name="cfname" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <!-- @deprecated as of 3.0 -->
        <field name="default" col-name="defaultvalue" type="long-varchar"/>
        <field name="fieldtype" type="numeric"/>
        <!-- @deprecated as of 3.1 -->
        <field name="project" type="numeric"/>
        <field name="issuetype" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="IssueType">
            <key-map field-name="issuetype" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="Project">
            <key-map field-name="project" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="CustomFieldValue">
            <key-map field-name="id" rel-field-name="customfield"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="CustomFieldOption">
            <key-map field-name="id" rel-field-name="customfield"/>
        </relation>
    </entity>

    <!-- an entity to represent custom field values-->
    <entity entity-name="CustomFieldValue" table-name="customfieldvalue" package-name="">
        <field name="id" type="numeric"/>
        <field name="issue" type="numeric"/>
        <field name="customfield" type="numeric"/>
        <!-- will store the "parentKey" of the value. Used for cascading drop-downs -->
        <field name="parentkey" type="long-varchar"/>

        <field name="stringvalue" type="long-varchar"/>
        <field name="numbervalue" type="floating-point"/>
        <field name="textvalue" type="extremely-long"/>
        <field name="datevalue" type="date-time"/>

        <!-- @deprecated as of 3.0 -->
        <field name="valuetype" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="CustomField">
            <key-map field-name="customfield" rel-field-name="id"/>
        </relation>

        <index name="cfvalue_issue">
            <index-field name="issue"/>
            <index-field name="customfield"/>
        </index>
    </entity>

    <!-- an entity to represent custom field options -->
    <entity entity-name="CustomFieldOption" table-name="customfieldoption" package-name="">
        <field name="id" type="numeric"/>
        <field name="customfield" type="numeric"/>
        <field name="customfieldconfig" type="numeric"/>
        <field name="parentoptionid" type="numeric"/>
        <field name="sequence" type="numeric"/>

        <field name="value" col-name="customvalue" type="long-varchar"/>

        <!-- @deprecated as of 3.1 -->
        <field name="type" col-name="optiontype" type="short-varchar" />

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="CustomField">
            <key-map field-name="customfield" rel-field-name="id"/>
        </relation>

        <index name="cf_cfoption">
            <index-field name="customfield"/>
        </index>
    </entity>

    <!-- =========================================================================================================== -->
    <!--                                                                                         Field Configuration -->
    <!-- =========================================================================================================== -->


    <!--
        Context that stores custom field schemes per context. Note the key is in format customfield_XXXX for custom fields.
        @since JIRA 3.2
    -->
    <entity entity-name="ConfigurationContext" table-name="configurationcontext" package-name="">
        <field name="id" type="numeric"/>

        <field name="projectcategory" type="numeric"/>
        <field name="project" type="numeric"/>
        <field name="key" col-name="customfield" type="long-varchar"/>
        <field name="fieldconfigscheme" type="numeric"/>

        <prim-key field="id"/>

        <index name="confcontext">
            <index-field name="projectcategory" />
            <index-field name="project" />
            <index-field name="key" />
        </index>
    </entity>

    <!-- Configuration scheme for custom fields @since JIRA 3.2-->
    <entity entity-name="FieldConfigScheme" table-name="fieldconfigscheme" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="configname" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <field name="fieldid" type="short-varchar"/>

        <!-- @deprecated since JIRA 3.4 -->
        <field name="customfield" type="numeric"/>

        <prim-key field="id"/>

        <relation type="many" title="Related" rel-entity-name="FieldConfigSchemeIssueType">
            <key-map field-name="id" rel-field-name="fieldconfigscheme"/>
        </relation>

        <index name="fcs_fieldid">
            <index-field name="fieldid" />
        </index>
    </entity>

    <!-- Many to many link entity with between schemes and config @since JIRA 3.2-->
    <entity entity-name="FieldConfigSchemeIssueType" table-name="fieldconfigschemeissuetype" package-name="">
        <field name="id" type="numeric"/>

        <field name="issuetype" type="long-varchar"/>
        <field name="fieldconfigscheme" type="numeric"/>
        <field name="fieldconfiguration" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldConfigScheme">
            <key-map field-name="fieldconfigscheme" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="FieldConfiguration">
            <key-map field-name="fieldconfiguration" rel-field-name="id"/>
        </relation>

        <index name="fcs_issuetype">
            <index-field name="issuetype" />
        </index>

        <index name="fcs_scheme">
            <index-field name="fieldconfigscheme" />
        </index>
    </entity>

    <!-- Configuration for fields @since JIRA 3.2-->
    <entity entity-name="FieldConfiguration" table-name="fieldconfiguration" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="configname" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="fieldid" type="short-varchar"/>

        <!-- @deprecated since JIRA 3.4 -->
        <field name="customfield" type="numeric"/>

        <prim-key field="id"/>

        <index name="fc_fieldid">
            <index-field name="fieldid" />
        </index>
    </entity>


    <entity entity-name="OptionConfiguration" table-name="optionconfiguration" package-name="">
        <field name="id" type="numeric"/>

        <field name="fieldid" type="short-varchar"/>
        <field name="optionid" type="short-varchar"/>

        <field name="fieldconfig" type="numeric"/>

        <field name="sequence" type="numeric"/>

        <prim-key field="id"/>

        <index name="fieldid_optionid">
            <index-field name="fieldid"/>
            <index-field name="optionid"/>
        </index>

        <index name="fieldid_fieldconf">
            <index-field name="fieldid"/>
            <index-field name="fieldconfig"/>
        </index>
    </entity>


    <!-- Stores arbitrary objects as XML @since JIRA 3.2-->
    <entity entity-name="GenericConfiguration" table-name="genericconfiguration" package-name="">
        <field name="id" type="numeric"/>

        <field name="datatype" type="short-varchar"/>
        <field name="datakey" type="short-varchar"/>

        <field name="xmlvalue" type="very-long"/>

        <prim-key field="id"/>
        <index name="type_key" unique="true">
            <index-field name="datatype" />
            <index-field name="datakey" />
        </index>

    </entity>

    <!-- entity to represent a 'batch' of changes to an issue -->
    <entity entity-name="ChangeGroup" table-name="changegroup" package-name="">
        <field name="id" type="numeric"/>

        <field name="issue" col-name="issueid" type="numeric"/>
        <field name="author" type="long-varchar"/>
        <field name="created" type="date-time"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Issue">
            <key-map field-name="issue" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="ChangeItem">
            <key-map field-name="id" rel-field-name="group"/>
        </relation>

        <index name="chggroup_issue">
            <index-field name="issue"/>
        </index>
    </entity>

    <!-- entity to represent a single change to an issue. Always part of a change group -->
    <entity entity-name="ChangeItem" table-name="changeitem" package-name="">
        <field name="id" type="numeric"/>
        <field name="group" col-name="groupid" type="numeric"/>

        <!-- whether this is a built in field ('jira') or a custom field ('custom') - basically used to avoid naming scope problems -->
        <!-- also used for keeping record of the bug_id of a bug from Bugzilla Import-->
        <!-- and for keeping record of ids in issue move-->
        <field name="fieldtype" type="long-varchar"/>
        <field name="field" type="long-varchar"/>

        <field name="oldvalue" type="extremely-long"/>
        <!-- a string representation of the new value (i.e. "Documentation" instead of "4" for a component which might be deleted) -->
        <field name="oldstring" type="extremely-long"/>

        <field name="newvalue" type="extremely-long"/>
        <!-- a string representation of the new value -->
        <field name="newstring" type="extremely-long"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="ChangeGroup">
            <key-map field-name="group" rel-field-name="id"/>
        </relation>

        <index name="chgitem_chggrp">
            <index-field name="group"/>
        </index>
        <index name="chgitem_field">
            <index-field name="field"/>
        </index>
    </entity>

    <!-- Generic Associative Entity - awesome for M-M mappings between entities -->
    <entity entity-name="NodeAssociation" table-name="nodeassociation" package-name="">
        <field name="sourceNodeId" type="numeric"/>
        <field name="sourceNodeEntity" type="short-varchar"/>
        <field name="sinkNodeId" type="numeric"/>
        <field name="sinkNodeEntity" type="short-varchar"/>
        <field name="associationType" type="short-varchar"/>
        <field name="sequence" type="integer"/>
        <prim-key field="sourceNodeId"/>
        <prim-key field="sourceNodeEntity"/>
        <prim-key field="sinkNodeId"/>
        <prim-key field="sinkNodeEntity"/>
        <prim-key field="associationType"/>

        <index name="node_source">
            <index-field name="sourceNodeId"/>
            <index-field name="sourceNodeEntity"/>
        </index>
        <index name="node_sink">
            <index-field name="sinkNodeId"/>
            <index-field name="sinkNodeEntity"/>
        </index>
    </entity>

    <!-- Associative Entity between users entities -->
    <entity entity-name="UserAssociation" table-name="userassociation" package-name="">
        <field name="sourceName" type="short-varchar"/>
        <field name="sinkNodeId" type="numeric"/>
        <field name="sinkNodeEntity" type="short-varchar"/>
        <field name="associationType" type="short-varchar"/>
        <field name="sequence" type="integer"/>
        <prim-key field="sourceName"/>
        <prim-key field="sinkNodeId"/>
        <prim-key field="sinkNodeEntity"/>
        <prim-key field="associationType"/>

        <index name="user_source">
            <index-field name="sourceName"/>
        </index>
        <index name="user_sink">
            <index-field name="sinkNodeId"/>
            <index-field name="sinkNodeEntity"/>
        </index>
    </entity>

    <entity entity-name="MailServer" table-name="mailserver" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="from" col-name="mailfrom" type="long-varchar"/>
        <field name="prefix" type="short-varchar"/>
        <field name="smtpPort" col-name="smtp_port" type="short-varchar"/>
        <field name="type" col-name="server_type" type="short-varchar"/>
        <field name="servername" type="long-varchar"/>
        <field name="jndilocation" type="long-varchar"/>
        <field name="username" col-name="mailusername" type="long-varchar"/>
        <field name="password" col-name="mailpassword" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>

    <entity entity-name="NotificationScheme" table-name="notificationscheme" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="Notification">
            <key-map field-name="id" rel-field-name="scheme"/>
        </relation>
    </entity>

    <entity entity-name="NotificationInstance" table-name="notificationinstance" package-name="">
        <field name="id" type="numeric"/>
        <!-- Notification type - see IssueEventType -->
        <field name="type" col-name="notificationtype" type="short-varchar"/>
        <!-- Id of the entity which this mail is about.  Referred-to table deducible from 'type' -->
        <field name="source" type="numeric"/>
        <!-- Email address of sent email -->
        <field name="email" col-name="emailaddress" type="long-varchar"/>
        <field name="messageid" type="long-varchar"/>
        <prim-key field="id"/>

        <index name="notif_source">
            <index-field name="source"/>
        </index>
    </entity>

    <entity entity-name="Notification" table-name="notification" package-name="">
        <field name="id" type="numeric"/>
        <field name="scheme" type="numeric"/>

        <!--deprecated - eventTypeid is now used -->
        <field name="event" type="short-varchar"/>

        <field name="eventTypeId" type="numeric"/>
        <field name="templateId" type="numeric"/>
        <field name="type" col-name="notif_type" type="short-varchar"/>
        <field name="parameter" col-name="notif_parameter" type="short-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="NotificationScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>

        <index name="ntfctn_scheme">
            <index-field name="scheme"/>
        </index>
    </entity>

    <entity entity-name="EventType" table-name="jiraeventtype" package-name="">
        <field name="id" type="numeric"/>
        <field name="templateId" type="numeric"/>
        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="type" col-name="event_type" type="short-varchar"/>
        <prim-key field="id"/>
    </entity>

    <entity entity-name="PermissionScheme" table-name="permissionscheme" package-name="">
        <!--Default Permission Scheme for this table will have an id of 0 -->
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="SchemePermissions">
            <key-map field-name="id" rel-field-name="scheme"/>
        </relation>
    </entity>

    <entity entity-name="SchemePermissions" table-name="schemepermissions" package-name="">
        <field name="id" type="numeric"/>

        <field name="scheme" type="numeric"/>
        <field name="permission" type="numeric"/>
        <field name="type" col-name="perm_type" type="long-varchar"/>
        <field name="parameter" col-name="perm_parameter" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="PermissionScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>

        <index name="prmssn_scheme">
            <index-field name="scheme"/>
        </index>
    </entity>

    <entity entity-name="IssueSecurityScheme" table-name="issuesecurityscheme" package-name="">
        <!--Default Issue Security Scheme for this table will have an id of 0 -->
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="defaultlevel" type="numeric"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="SchemeIssueSecurities">
            <key-map field-name="id" rel-field-name="scheme"/>
        </relation>

        <relation type="many" title="Child" rel-entity-name="SchemeIssueSecurityLevels">
            <key-map field-name="id" rel-field-name="scheme"/>
        </relation>

        <relation type="one" title="Parent" rel-entity-name="SchemeIssueSecurityLevels">
            <key-map field-name="defaultlevel" rel-field-name="id"/>
        </relation>

    </entity>

    <entity entity-name="SchemeIssueSecurities" table-name="schemeissuesecurities" package-name="">
        <field name="id" type="numeric"/>

        <field name="scheme" type="numeric"/>
        <field name="security" type="numeric"/>
        <field name="type" col-name="sec_type" type="long-varchar"/>
        <field name="parameter" col-name="sec_parameter" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="IssueSecurityScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="SchemeIssueSecurityLevels">
            <key-map field-name="security" rel-field-name="id"/>
        </relation>

        <index name="sec_scheme">
            <index-field name="scheme"/>
        </index>

        <index name="sec_security">
            <index-field name="security"/>
        </index>
    </entity>

    <entity entity-name="SchemeIssueSecurityLevels" table-name="schemeissuesecuritylevels" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>
        <field name="scheme" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="IssueSecurityScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="SchemeIssueSecurities">
            <key-map field-name="id" rel-field-name="security"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="Issue">
            <key-map field-name="id" rel-field-name="security"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="IssueSecurityScheme">
            <key-map field-name="id" rel-field-name="defaultlevel"/>
        </relation>
    </entity>

    <entity entity-name="FilterSubscription" table-name="filtersubscription" package-name="">
        <field name="id" type="numeric"/>
        <field name="filterID" type="numeric"/>
        <field name="username" type="short-varchar"/>
        <field name="group" col-name="groupname" type="short-varchar"/>
        <field name="lastRun" type="date-time"/>
        <field name="emailOnEmpty" type="very-short"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="SearchRequest">
            <key-map field-name="filterID" rel-field-name="id"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="OSUser">
            <key-map field-name="username" rel-field-name="name"/>
        </relation>

        <index name="subscrpt_user">
            <index-field name="filterID"/>
            <index-field name="username"/>
        </index>

        <index name="subscrptn_group">
            <index-field name="filterID"/>
            <index-field name="group"/>
        </index>
    </entity>

    <!-- QUARTZ -->
    <entity entity-name="QRTZJobDetails" table-name="qrtz_job_details" package-name="">
        <field name="id" type="numeric"/>
        <field name="jobName" type="long-varchar"/>
        <field name="jobGroup" type="long-varchar"/>
        <field name="className" type="long-varchar"/>
        <field name="isDurable" type="short-varchar"/>
        <field name="isStateful" type="short-varchar"/>
        <field name="requestsRecovery" type="short-varchar"/>
        <field name="jobData" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="QRTZTriggers">
            <key-map field-name="id" rel-field-name="job"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="QRTZJobListeners">
            <key-map field-name="id" rel-field-name="job"/>
        </relation>
    </entity>

    <entity entity-name="QRTZJobListeners" table-name="qrtz_job_listeners" package-name="">
        <field name="id" type="numeric"/>
        <field name="job" type="numeric"/>
        <field name="jobListener" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZJobDetails">
            <key-map field-name="job" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZTriggers" table-name="qrtz_triggers" package-name="">
        <field name="id" type="numeric"/>
        <field name="triggerName" type="long-varchar"/>
        <field name="triggerGroup" type="long-varchar"/>
        <field name="job" type="numeric"/>
        <field name="nextFire" type="date-time"/>
        <field name="triggerState" type="long-varchar"/>
        <field name="triggerType" type="short-varchar"/>
        <field name="startTime" type="date-time"/>
        <field name="endTime" type="date-time"/>
        <field name="calendarName" type="long-varchar"/>
        <field name="misfireInstr" type="integer"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZJobDetails">
            <key-map field-name="job" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZSimpleTriggers" table-name="qrtz_simple_triggers" package-name="">
        <field name="id" type="numeric"/>
        <field name="trigger" col-name="trigger_id" type="numeric"/>
        <field name="repeatCount" type="integer"/>
        <field name="repeatInterval" type="numeric"/>
        <field name="timesTriggered" type="integer"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZTriggers">
            <key-map field-name="trigger" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZCronTriggers" table-name="qrtz_cron_triggers" package-name="">
        <field name="id" type="numeric"/>
        <field name="trigger" col-name="trigger_id" type="numeric"/>
        <field name="cronExpression" col-name="cronExperssion" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZTriggers">
            <key-map field-name="trigger" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZTriggerListeners" table-name="qrtz_trigger_listeners" package-name="">
        <field name="id" type="numeric"/>
        <field name="trigger" col-name="trigger_id" type="numeric"/>
        <field name="triggerListener" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZTriggers">
            <key-map field-name="trigger" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZFiredTriggers" table-name="qrtz_fired_triggers" package-name="">
        <field name="id" type="numeric"/>
        <field name="entryId" type="long-varchar"/>
        <field name="trigger" col-name="trigger_id" type="numeric"/>
        <field name="triggerListener" type="long-varchar"/>
        <field name="firedTime" type="date-time"/>
        <field name="triggerState" type="long-varchar"/>

        <prim-key field="entryId"/>

        <relation type="one" title="Parent" rel-entity-name="QRTZTriggers">
            <key-map field-name="trigger" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="QRTZCalendars" table-name="qrtz_calendars" package-name="">
        <field name="id" type="numeric"/>
        <field name="calendarName" type="long-varchar"/>
        <field name="calendar" type="very-long"/>

        <prim-key field="calendarName"/>
    </entity>

    <entity entity-name="PortalPage" table-name="portalpage" package-name="">
        <field name="id" type="numeric"/>
        <field name="username" type="long-varchar"/>
        <field name="pagename" type="long-varchar"/>
        <field name="description" type="long-varchar"/>
        <field name="sequence" type="numeric"/>
        <field name="favCount" type="numeric"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="PortletConfiguration">
            <key-map field-name="id" rel-field-name="portalpage"/>
        </relation>
    </entity>

    <entity entity-name="PortletConfiguration" table-name="portletconfiguration" package-name="">
        <field name="id" type="numeric"/>
        <field name="portalpage" type="numeric"/>
        <field name="portletId" type="long-varchar"/>
        <field name="columnNumber" type="integer"/>
        <field name="position" col-name="positionseq" type="integer"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="PortalPage">
            <key-map field-name="portalpage" rel-field-name="id"/>
        </relation>
    </entity>

    <entity entity-name="UpgradeHistory" table-name="upgradehistory" package-name="">
        <field name="id" type="numeric"/>
        <field name="upgradeclass" type="long-varchar"/>

        <prim-key field="upgradeclass"/>
    </entity>

    <entity entity-name="FieldLayoutScheme" table-name="fieldlayoutscheme" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="FieldLayout">
            <key-map field-name="id" rel-field-name="layoutscheme"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="FieldLayoutSchemeAssociation">
            <key-map field-name="id" rel-field-name="fieldlayoutscheme"/>
        </relation>
    </entity>

    <entity entity-name="FieldLayoutSchemeEntity" table-name="fieldlayoutschemeentity" package-name="">
        <field name="id" type="numeric"/>
        <field name="scheme" type="numeric"/>
        <field name="issuetype" col-name="issuetype" type="long-varchar"/>
        <field name="fieldlayout" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldLayoutScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>

        <index name="fieldlayout_scheme">
            <index-field name="scheme"/>
        </index>

        <index name="fieldlayout_layout">
            <index-field name="fieldlayout"/>
        </index>
    </entity>

    <!-- deprecated. FieldLayoutSchemeEntity table is used to map field layouts to issue types  -->
    <entity entity-name="FieldLayoutSchemeAssociation" table-name="fieldlayoutschemeassociation" package-name="">
        <field name="id" type="numeric"/>

        <field name="issuetype" type="long-varchar"/>
        <field name="project" type="numeric"/>
        <field name="fieldlayoutscheme" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldLayoutScheme">
            <key-map field-name="fieldlayoutscheme" rel-field-name="id"/>
        </relation>

        <index name="fl_scheme_assoc">
            <index-field name="project"/>
            <index-field name="issuetype"/>
        </index>
    </entity>

    <entity entity-name="FieldLayout" table-name="fieldlayout" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" type="long-varchar"/>
        <field name="description" type="long-varchar"/>

        <!-- used to record whether the FieldLayout is e.g. system default -->
        <field name="type" col-name="layout_type" type="long-varchar"/>

        <!-- deprecated -->
        <field name="layoutscheme" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldLayoutScheme">
            <key-map field-name="layoutscheme" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="FieldLayoutItem">
            <key-map field-name="id" rel-field-name="fieldlayout"/>
        </relation>
    </entity>

    <entity entity-name="FieldLayoutItem" table-name="fieldlayoutitem" package-name="">
        <field name="id" type="numeric"/>

        <field name="fieldlayout" type="numeric"/>
        <field name="fieldidentifier" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <!-- deprecated -->
        <field name="verticalposition" type="numeric"/>

        <field name="ishidden" type="short-varchar"/>
        <field name="isrequired" type="short-varchar"/>

        <field name="renderertype" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldLayout">
            <key-map field-name="fieldlayout" rel-field-name="id"/>
        </relation>
    </entity>

    <!-- User field configuration for the columns they want to show on the Issue Navigator -->
    <entity entity-name="ColumnLayout" table-name="columnlayout" package-name="">
        <field name="id" type="numeric"/>

        <field name="username" type="long-varchar"/>
        <field name="searchrequest" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="OSUser">
            <key-map field-name="username" rel-field-name="name"/>
        </relation>
        <relation type="one" title="Parent" rel-entity-name="SearchRequest">
            <key-map field-name="searchrequest" rel-field-name="id"/>
        </relation>
        <relation type="many" title="Child" rel-entity-name="ColumnLayoutItem">
            <key-map field-name="id" rel-field-name="columnlayout"/>
        </relation>
    </entity>

    <entity entity-name="ColumnLayoutItem" table-name="columnlayoutitem" package-name="">
        <field name="id" type="numeric"/>

        <field name="columnlayout" type="numeric"/>
        <field name="fieldidentifier" type="long-varchar"/>
        <field name="horizontalposition" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="ColumnLayout">
            <key-map field-name="columnlayout" rel-field-name="id"/>
        </relation>
    </entity>

    <!-- Field Screen tables -->
    <entity entity-name="FieldScreen" table-name="fieldscreen" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>


    <entity entity-name="FieldScreenTab" table-name="fieldscreentab" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="long-varchar"/>
        <field name="sequence" type="numeric"/>
        <field name="fieldscreen" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldScreen">
            <key-map field-name="fieldscreen" rel-field-name="id"/>
        </relation>

        <index name="fieldscreen_tab">
            <index-field name="fieldscreen"/>
        </index>
    </entity>

    <entity entity-name="FieldScreenLayoutItem" table-name="fieldscreenlayoutitem" package-name="">
        <field name="id" type="numeric"/>

        <field name="fieldidentifier" type="long-varchar"/>
        <field name="sequence" type="numeric"/>
        <field name="fieldscreentab" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldScreenTab">
            <key-map field-name="fieldscreentab" rel-field-name="id"/>
        </relation>

        <index name="fieldscitem_tab">
            <index-field name="fieldscreentab"/>
        </index>

        <index name="fieldscreen_field">
            <index-field name="fieldidentifier"/>
        </index>
    </entity>

    <!-- Issue Type Screen Scheme tables -->
    <entity entity-name="IssueTypeScreenScheme" table-name="issuetypescreenscheme" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>

    <entity entity-name="IssueTypeScreenSchemeEntity" table-name="issuetypescreenschemeentity" package-name="">
        <field name="id" type="numeric"/>

        <field name="issuetype" type="long-varchar"/>
        <field name="scheme" type="numeric"/>
        <field name="fieldscreenscheme" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="IssueTypeScreenScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>

        <relation type="one" title="Child" rel-entity-name="FieldScreenScheme">
            <key-map field-name="fieldscreenscheme" rel-field-name="id"/>
        </relation>

        <index name="fieldscreen_scheme">
            <index-field name="fieldscreenscheme"/>
        </index>
    </entity>

    <!-- Field Screen Scheme tables -->
    <entity entity-name="FieldScreenScheme" table-name="fieldscreenscheme" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>

    <entity entity-name="FieldScreenSchemeItem" table-name="fieldscreenschemeitem" package-name="">
        <field name="id" type="numeric"/>

        <field name="operation" type="numeric"/>
        <field name="fieldscreen" type="numeric"/>
        <field name="fieldscreenscheme" type="numeric"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="FieldScreenScheme">
            <key-map field-name="fieldscreenscheme" rel-field-name="id"/>
        </relation>

        <index name="screenitem_scheme">
            <index-field name="fieldscreenscheme"/>
        </index>
    </entity>

    <!-- This table is deprecated. Use jiraschemeperms   -->
    <entity entity-name="Permission" table-name="jiraperms" package-name="">
        <field name="id" type="numeric"/>

        <field name="type" col-name="permtype" type="numeric"/>
        <field name="project" col-name="projectid" type="numeric"/>
        <field name="group" col-name="groupname" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>

	<!--
		Lists Applications we trust to pass credentials on behalf of their logged in users.

		Note that this is keyed by a String applicationId that is supplied by the requesting application
		as opposed to a numeric sequence
	 -->
    <entity entity-name="TrustedApplication" table-name="trustedapp" package-name="">
        <field name="id" type="numeric"/>
        <field name="applicationId" type="long-varchar"/>
        <field name="name" type="long-varchar"/>
        <field name="publicKey" type="very-long"/>
        <field name="ipMatch" type="very-long"/>
        <field name="urlMatch" type="very-long"/>
        <field name="timeout" type="numeric"/>
        <field name="created" type="date-time"/>
        <field name="createdBy" type="long-varchar"/>
        <field name="updated" type="date-time"/>
        <field name="updatedBy" type="long-varchar"/>

        <prim-key field="id"/>
        <index name="trustedapp_id" unique="true">
            <index-field name="applicationId"/>
        </index>
    </entity>

    <entity entity-name="VersionControl" table-name="versioncontrol" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="vcsname" type="long-varchar"/>
        <field name="description" col-name="vcsdescription" type="long-varchar"/>
        <field name="type" col-name="vcstype" type="long-varchar"/>

        <prim-key field="id"/>
    </entity>

    <entity entity-name="Workflow" table-name="jiraworkflows" package-name="">
        <field name="id" type="numeric"/>

        <field name="name" col-name="workflowname" type="long-varchar"/>
        <field name="creator" col-name="creatorname" type="long-varchar"/>
        <field name="descriptor" type="extremely-long"/>
        <field name="islocked" type="short-varchar"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="DraftWorkflow">
            <key-map field-name="name" rel-field-name="parentname"/>
        </relation>
    </entity>

    <entity entity-name="DraftWorkflow" table-name="jiradraftworkflows" package-name="">
        <field name="id" type="numeric"/>
        <field name="parentname" type="long-varchar"/>
        <field name="descriptor" type="extremely-long"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="Workflow">
            <key-map field-name="parentname" rel-field-name="name"/>
        </relation>

    </entity>

    <entity entity-name="WorkflowScheme" table-name="workflowscheme" package-name="">
        <!--Default Workflow Scheme for this table will have an id of 0 -->
        <field name="id" type="numeric"/>

        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="WorkflowSchemeEntity">
            <key-map field-name="id" rel-field-name="scheme"/>
        </relation>
    </entity>

    <entity entity-name="WorkflowSchemeEntity" table-name="workflowschemeentity" package-name="">
        <field name="id" type="numeric"/>
        <field name="scheme" type="numeric"/>
        <field name="workflow" type="long-varchar"/>
        <field name="issuetype" col-name="issuetype" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="WorkflowScheme">
            <key-map field-name="scheme" rel-field-name="id"/>
        </relation>

        <index name="workflow_scheme">
            <index-field name="scheme"/>
        </index>
    </entity>

    <!-- entities for project roles -->
    <entity entity-name="ProjectRole" table-name="projectrole" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" type="long-varchar"/>
        <field name="description" type="very-long"/>

        <prim-key field="id"/>

        <relation type="many" title="Child" rel-entity-name="ProjectRoleActor">
            <key-map field-name="id" rel-field-name="projectroleid"/>
        </relation>
    </entity>

    <entity entity-name="ProjectRoleActor" table-name="projectroleactor" package-name="">
        <field name="id" type="numeric"/>
        <field name="pid" type="numeric"/>
        <field name="projectroleid" type="numeric"/>
        <field name="roletype" type="long-varchar"/>
        <field name="roletypeparameter" type="long-varchar"/>

        <prim-key field="id"/>

        <relation type="one" title="Parent" rel-entity-name="ProjectRole">
            <key-map field-name="projectroleid" rel-field-name="id"/>
        </relation>

        <index name="role_player_idx">
            <index-field name="projectroleid"/>
            <index-field name="pid"/>
        </index>
    </entity>

    <!-- entity for plugin versions -->
    <entity entity-name="PluginVersion" table-name="pluginversion" package-name="">
        <field name="id" type="numeric"/>
        <field name="name" col-name="pluginname" type="long-varchar"/>
        <field name="key" col-name="pluginkey" type="long-varchar"/>
        <field name="version" col-name="pluginversion" type="long-varchar"/>
        <field name="created" type="date-time"/>

        <prim-key field="id"/>
    </entity>

    <!-- entity for favourites -->
    <entity entity-name="FavouriteAssociations" table-name="favouriteassociations" package-name="">
        <field name="id" type="numeric"/>
        <field name="username" type="long-varchar"/>
        <field name="entityType" col-name="entitytype" type="short-varchar"/>
        <field name="entityId" col-name="entityid" type="numeric"/>
        <field name="sequence" type="numeric"/>

        <prim-key field="id"/>
        <index name="favourite_index" unique="true">
            <index-field name="username"/>
            <index-field name="entityType"/>
            <index-field name="entityId"/>
        </index>
    </entity>


    <!-- entity for sharing -->
    <entity entity-name="SharePermissions" table-name="sharepermissions" package-name="">
        <field name="id" type="numeric"/>
        <field name="entityId" col-name="entityid" type="numeric"/>
        <field name="entityType" col-name="entitytype" type="short-varchar"/>
        <field name="type" col-name="sharetype" type="very-short"/>
        <field name="param1" type="long-varchar"/>
        <field name="param2" type="short-varchar"/>

        <prim-key field="id"/>
        <index name="share_index">
            <index-field name="entityId"/>
            <index-field name="entityType"/>
        </index>
    </entity>


    <!-- Views -->
    <view-entity entity-name="IssueCount" package-name="">
      <member-entity entity-alias="I" entity-name="Issue" />
      <alias entity-alias="I" field="id" function="count" name="count" />
      <alias entity-alias="I" field="project" name="project" />
    </view-entity>

    <view-entity entity-name="ProjectCount" package-name="">
      <member-entity entity-alias="P" entity-name="Project" />
      <alias entity-alias="P" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="CustomFieldCount" package-name="">
      <member-entity entity-alias="CF" entity-name="CustomField" />
      <alias entity-alias="CF" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="WorkflowCount" package-name="">
      <member-entity entity-alias="WF" entity-name="Workflow" />
      <alias entity-alias="WF" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="OSUserCount" package-name="">
      <member-entity entity-alias="U" entity-name="OSUser" />
      <alias entity-alias="U" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="OSGroupCount" package-name="">
      <member-entity entity-alias="G" entity-name="OSGroup" />
      <alias entity-alias="G" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="NotificationInstanceCount" package-name="">
      <member-entity entity-alias="N" entity-name="NotificationInstance" />
      <alias entity-alias="N" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="ActionCount" package-name="">
      <member-entity entity-alias="A" entity-name="Action" />
      <alias entity-alias="A" field="id" function="count" name="count" />
      <alias entity-alias="A" field="issue" name="issue" />
      <alias entity-alias="A" field="type" name="type"/>
      <alias entity-alias="A" field="level" name="level"/>
      <alias entity-alias="A" field="rolelevel" name="rolelevel"/>
    </view-entity>

    <view-entity entity-name="WorklogCount" package-name="">
      <member-entity entity-alias="W" entity-name="Worklog" />
      <alias entity-alias="W" field="id" function="count" name="count" />
      <alias entity-alias="W" field="grouplevel" name="grouplevel"/>
      <alias entity-alias="W" field="rolelevel" name="rolelevel"/>
    </view-entity>

    <view-entity entity-name="WorklogMax" package-name="">
      <member-entity entity-alias="W" entity-name="Worklog" />
      <alias entity-alias="W" field="id" function="max" name="max" />
    </view-entity>

    <view-entity entity-name="PortalPageCount" package-name="">
      <member-entity entity-alias="PPC" entity-name="PortalPage" />
      <alias entity-alias="PPC" field="id" function="count" name="count" />
    </view-entity>

    <view-entity entity-name="SearchRequestCount" package-name="">
      <member-entity entity-alias="SRC" entity-name="SearchRequest" />
      <alias entity-alias="SRC" field="id" function="count" name="count" />
      <alias entity-alias="SRC" field="project" name="project" />
    </view-entity>

    <view-entity entity-name="OSUserPropertySetView" package-name="">
      <member-entity entity-alias="PE" entity-name="OSPropertyEntry" />
      <member-entity entity-alias="PS" entity-name="OSPropertyString" />
      <alias entity-alias="PE" field="propertyKey" name="propertyKey" />
      <alias entity-alias="PE" field="entityName" name="entityName" />
      <alias entity-alias="PE" field="id" name="id" />
      <alias entity-alias="PE" field="entityId" name="entityId" />
      <alias entity-alias="PS" field="value" name="propertyValue" />
      <view-link entity-alias="PE" rel-entity-alias="PS" rel-optional="false">
        <key-map field-name="id" rel-field-name="id" />
      </view-link>
    </view-entity>

    <view-entity entity-name="IssueWorkflowStepView" package-name="">
      <member-entity entity-alias="jiraissue" entity-name="Issue" />
      <member-entity entity-alias="currentStep" entity-name="OSCurrentStep" />
      <alias entity-alias="jiraissue" field="id" name="issueid" />
      <alias entity-alias="jiraissue" field="key" name="issueKey" />
      <alias entity-alias="jiraissue" field="status" name="status" />
      <alias entity-alias="jiraissue" field="project" name="project" />
      <alias entity-alias="jiraissue" field="type" name="type" />
      <alias entity-alias="currentStep" field="stepId" name="stepId" />
      <view-link entity-alias="jiraissue" rel-entity-alias="currentStep" rel-optional="true">
        <key-map field-name="workflowId" rel-field-name="entryId" />
      </view-link>
    </view-entity>

    <view-entity entity-name="IssueWorkflowEntryView" package-name="">
      <member-entity entity-alias="JI" entity-name="Issue" />
      <member-entity entity-alias="WE" entity-name="OSWorkflowEntry" />
      <alias entity-alias="JI" field="id" name="issueId" />
      <alias entity-alias="JI" field="project" name="issueProject" />
      <alias entity-alias="JI" field="type" name="issueType" />
      <alias entity-alias="WE" field="name" name="workflowName" />

      <view-link entity-alias="JI" rel-entity-alias="WE" rel-optional="false">
        <key-map field-name="workflowId" rel-field-name="id" />
      </view-link>
    </view-entity>

    <view-entity entity-name="ChangeGroupChangeItemView" package-name="">
      <member-entity entity-alias="CG" entity-name="ChangeGroup" />
      <member-entity entity-alias="CI" entity-name="ChangeItem" />
      <alias entity-alias="CG" field="id" name="changegroupid" />
      <alias entity-alias="CG" field="issue" name="issue" />
      <alias entity-alias="CG" field="author" name="author" />
      <alias entity-alias="CG" field="created" name="created" />
      <alias entity-alias="CI" field="id" name="changeitemid" />
      <alias entity-alias="CI" field="group" name="group" />
      <alias entity-alias="CI" field="fieldtype" name="fieldtype" />
      <alias entity-alias="CI" field="field" name="field" />
      <alias entity-alias="CI" field="oldvalue" name="oldvalue" />
      <alias entity-alias="CI" field="oldstring" name="oldstring" />
      <alias entity-alias="CI" field="newvalue" name="newvalue" />
      <alias entity-alias="CI" field="newstring" name="newstring" />

      <view-link entity-alias="CG" rel-entity-alias="CI" rel-optional="false">
        <key-map field-name="id" rel-field-name="group" />
      </view-link>
    </view-entity>

    <!-- The views for searching Filters. -->

    <view-entity entity-name="SearchRequestShareView" package-name="">
    	<member-entity entity-alias="SR" entity-name="SearchRequest"/>
    	<member-entity entity-alias="SP" entity-name="SharePermissions"/>

        <alias entity-alias="SR" field="id" name="id"/>
    	<alias entity-alias="SR" field="name" name="name"/>
    	<alias entity-alias="SR" field="author" name="author"/>
        <alias entity-alias="SR" field="description" name="description"/>
        <alias entity-alias="SR" field="favCount" name="favCount"/>
        <alias entity-alias="SR" field="request" name="request"/>
        <alias entity-alias="SP" field="entityId" name="entityId"/>
        <alias entity-alias="SP" field="entityType" name="entityType"/>
        <alias entity-alias="SP" field="type" name="type"/>
        <alias entity-alias="SP" field="param1" name="param1"/>
        <alias entity-alias="SP" field="param2" name="param2"/>

        <view-link entity-alias="SR" rel-entity-alias="SP" rel-optional="true">
    		<key-map field-name="id" rel-field-name="entityId"/>
            <key-map field-name="" rel-field-name="entityType" const-value="SearchRequest"/>
        </view-link>
    </view-entity>

</entitymodel>
