The following code sample shows the section of the base userProfile.xml file, included in the Personalization module, that defines the item-descriptors used by the Dynamo User Directory. (Note that the sample shows only an excerpt and not the complete userProfile.xml file.)

<!--  Roles are the base class that organizational roles inherit from. -->

<item-descriptor name="role" sub-type-property="type" version-property="version"
       display-property="name" display-name-resource="itemDescriptorRole"
       sub-type-value="role" default="false" content="false" folder="false"
       use-id-for-path="false" hidden="false" expert="false" cache-mode="simple">
  <attribute name="resourceBundle"
   value="atg.userprofiling.UserProfileTemplateResources" />
  <table name="dps_role" type="primary" id-column-name="role_id">
    <property name="type" data-type="enumerated" expert="true"
     display-name-resource="type" default="role" required="false"
     readable="true" writable="true" queryable="true" hidden="false"
     cache-mode="inherit">
      <attribute name="useCodeForValue" value="false" />
      <option value="role" code="2000" />
      <option value="organizationalRole" code="2001" />
      <attribute name="propertySortPriority" value="50" />
    </property>
    <property name="version" column-name="version" data-type="int"
     writable="false" expert="true" display-name-resource="version"
     required="false" readable="true" queryable="true" hidden="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="60" />
    </property>
    <property name="name" column-name="name" data-type="string" required="true"
     display-name-resource="name" readable="true" writable="true"
     queryable="true" hidden="false" expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="10" />
    </property>
    <property name="description" column-name="description" data-type="string"
     display-name-resource="description" required="false" readable="true"
     writable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="20" />
    </property>
  </table>
  <property name="relativeTo" hidden="true" required="false" readable="true"
   writable="true" queryable="true" expert="false" cache-mode="inherit" />
</item-descriptor>

<!--  The organizational role, which is really an implementation
 of relativeTo of item-type organization. -->

<item-descriptor name="organizationalRole" super-type="role"
 sub-type-value="organizationalRole"
 display-name-resource="itemDescriptorOrganizationalRole" default="false"
 content="false" folder="false" use-id-for-path="false" hidden="false"
 expert="false" cache-mode="simple">
  <attribute name="resourceBundle"
   value="atg.userprofiling.UserProfileTemplateResources" />
  <table name="dps_relativerole" id-column-name="role_id" type="auxiliary">
    <property name="function" column-name="dps_function" data-type="string"
     required="true" display-name-resource="function" readable="true"
     writable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="30" />
    </property>
    <property name="relativeTo" hidden="false" item-type="organization"
     column-name="relative_to" required="true" cascade="update"
     display-name-resource="relativeTo" readable="true" writable="true"
     queryable="true" expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="40" />
    </property>
  </table>
</item-descriptor>

<!--  The Organization definition -->

<item-descriptor name="organization"
 display-name-resource="itemDescriptorOrganization" display-property="name"
 default="false" content="false" folder="false" use-id-for-path="false"
 hidden="false" expert="false" cache-mode="simple">
  <attribute name="resourceBundle"
   value="atg.userprofiling.UserProfileTemplateResources" />
  <attribute name="categoryBasicsPriority" value="10" />
  <attribute name="categoryOrganizationRolesPriority" value="20" />
  <table name="dps_organization" type="primary" id-column-name="org_id">
    <property category-resource="categoryBasics" name="name" data-type="string"
     required="true" column-name="name" display-name-resource="name"
     readable="true" writable="true" queryable="true" hidden="false"
     expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="10" />
    </property>
    <property category-resource="categoryBasics" name="description"
     data-type="string" column-name="description"
     display-name-resource="description" required="false" readable="true"
     writable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="20" />
    </property>
    <property category-resource="categoryOrganizationRoles"
     name="parentOrganization" item-type="organization"
     display-name-resource="parentOrganization" column-name="parent_org"
     required="false" readable="true" writable="true" queryable="true"
     hidden="false" expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="30" />
    </property>
  </table>
  <table name="dps_org_chldorg" type="multi" id-column-name="org_id">
    <property category-resource="categoryOrganizationRoles"
     name="childOrganizations" data-type="set"
     component-item-type="organization" column-name="child_org_id"
     display-name-resource="childOrganizations" required="false"
     readable="true" writable="true" queryable="true" hidden="false"
     expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="40" />
    </property>
  </table>
  <table name="dps_org_ancestors" type="multi" id-column-name="org_id"
   multi-column-name="sequence_num">
    <property category-resource="categoryOrganizationRoles"
     name="ancestorOrganizations" data-type="list"
     component-item-type="organization" column-name="anc_org"
     display-name-resource="ancestorOrganizations" required="false"
     readable="true" writable="true" queryable="true" hidden="false"
     expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="50" />
    </property>
  </table>

<!--  Adding roles to the list of organizations -->

  <table name="dps_org_role" type="multi" id-column-name="org_id">
    <property category-resource="categoryOrganizationRoles" name="roles"
       data-type="set" component-item-type="role" column-name="atg_role"
       display-name-resource="roles" required="false" readable="true"
       writable="true" queryable="true" hidden="false" expert="false"

       cache-mode="inherit">
      <attribute name="propertySortPriority" value="60" />
    </property>
  </table>

<!--  This Organization has these RelativeRoles -->

  <table name="dps_role_rel_org" type="multi" id-column-name="organization"
   multi-column-name="sequence_num">
    <property category-resource="categoryOrganizationRoles" name="relativeRoles"
     data-type="list" component-item-type="organizationalRole"
     column-name="role_id" display-name-resource="relativeRoles"
     required="false" readable="true" writable="true" queryable="true"
     hidden="false" expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="70" />
    </property>
  </table>
  <table name="dps_user_org" type="multi" id-column-name="organization">
    <property category-resource="categoryOrganizationRoles" name="members"
     data-type="set" component-item-type="user" column-name="user_id"
     writable="true" display-name-resource="members" required="false"
     readable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="resourceBundle"
       value="atg.userprofiling.UserProfileTemplateResources" />
      <attribute name="propertySortPriority" value="-2" />
    </property>
  </table>
</item-descriptor>

<!--  The folder structure that is used by organizations -->

<item-descriptor name="genericFolder" sub-type-property="type"
       display-name-resource="itemDescriptorGenericFolder"
       sub-type-value="genericFolder" expert="true" display-property="name"
       default="false" content="false" folder="false" use-id-for-path="false"
       hidden="false" cache-mode="simple">
  <attribute name="resourceBundle"
   value="atg.userprofiling.UserProfileTemplateResources" />
  <table name="dps_folder" type="primary" id-column-name="folder_id">
    <property name="type" data-type="enumerated" expert="true"
     display-name-resource="type" required="false" readable="true"
     writable="true" queryable="true" hidden="false" cache-mode="inherit">
      <attribute name="useCodeForValue" value="false" />
      <option value="genericFolder" code="2000" />
      <option value="roleFolder" code="2001" />
      <option value="orgFolder" code="2002" />
      <attribute name="propertySortPriority" value="60" />
    </property>
    <property name="name" data-type="string" column-name="name" required="true"
     display-name-resource="name" readable="true" writable="true"
     queryable="true" hidden="false" expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="10" />
    </property>
    <property name="description" data-type="string" column-name="description"
     display-name-resource="description" required="false" readable="true"
     writable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="20" />
    </property>
    <property name="parent" item-type="genericFolder" column-name="parent"
     display-name-resource="parent" required="false" readable="true"
     writable="true" queryable="true" hidden="false" expert="false"
     cache-mode="inherit">
      <attribute name="propertySortPriority" value="30" />
    </property>
  </table>
  <table name="dps_child_folder" type="multi" id-column-name="folder_id">
    <property name="childFolders" data-type="set"
       component-item-type="genericFolder" column-name="child_folder_id"
       queryable="true" display-name-resource="childFolders" required="false"
       readable="true" writable="true" hidden="false" expert="false"

       cache-mode="inherit">
      <attribute name="propertySortPriority" value="40" />
    </property>
  </table>
  <property name="childItems" required="false" readable="true" writable="true"
       queryable="true" hidden="false" expert="false" cache-mode="inherit" />
</item-descriptor>

<item-descriptor name="roleFolder" super-type="genericFolder" sub-type-
       value="roleFolder" display-name-resource="itemDescriptorRoleFolder"
       default="false" content="false" folder="false" use-id-for-path="false"
       hidden="false" expert="false" cache-mode="simple">
  <attribute name="resourceBundle"
       value="atg.userprofiling.UserProfileTemplateResources" />
  <table name="dps_rolefold_chld" type="multi" id-column-name="rolefold_id">
    <property name="childItems" data-type="set" component-item-type="role"
       column-name="role_id" display-name-resource="childItems" required="false"
       readable="true" writable="true" queryable="true" hidden="false"
       expert="false" cache-mode="inherit">
      <attribute name="propertySortPriority" value="50" />
    </property>
  </table>
</item-descriptor>