[
  {
    "context": "xtuple",
    "nameSpace": "XM",
    "type": "ProjectEmailProfile",
    "table": "xt.prjemlprofile",
    "isRest": true,
    "idSequenceName": "emlprofile_emlprofile_id_seq",
    "comment": "Project Email Profile Map",
    "privileges": {
      "all": {
        "create": "MaintainProjectEmailProfiles",
        "read": true,
        "update": "MaintainProjectEmailProfiles",
        "delete": "MaintainProjectEmailProfiles"
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "emlprofile_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "emlprofile_name",
          "isNaturalKey": true
        }
      },
      {
        "name": "description",
        "attr": {
          "type": "String",
          "column": "emlprofile_descrip"
        }
      },
      {
        "name": "from",
        "attr": {
          "type": "String",
          "column": "emlprofile_from"
        }
      },
      {
        "name": "replyTo",
        "attr": {
          "type": "String",
          "column": "emlprofile_replyto"
        }
      },
      {
        "name": "to",
        "attr": {
          "type": "String",
          "column": "emlprofile_to"
        }
      },
      {
        "name": "cc",
        "attr": {
          "type": "String",
          "column": "emlprofile_cc"
        }
      },
      {
        "name": "bcc",
        "attr": {
          "type": "String",
          "column": "emlprofile_bcc"
        }
      },
      {
        "name": "subject",
        "attr": {
          "type": "String",
          "column": "emlprofile_subject"
        }
      },
      {
        "name": "body",
        "attr": {
          "type": "String",
          "column": "emlprofile_body"
        }
      }
    ],
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "Project",
    "table": "prj",
    "idSequenceName": "prj_prj_id_seq",
    "isRest": true,
    "lockable": true,
    "comment": "Project Map",
    "privileges": {
      "all": {
        "create": "MaintainAllProjects",
        "read": "ViewAllProjects",
        "update": "MaintainAllProjects",
        "delete": "MaintainAllProjects"
      },
      "personal": {
        "create": "MaintainPersonalProjects",
        "read": "ViewPersonalProjects",
        "update": "MaintainPersonalProjects",
        "delete": "MaintainPersonalProjects",
        "properties": [
          "owner.username",
          "assignedTo.username"
        ]
      },
      "attribute": {
        "owner": {
          "create": "EditOwner",
          "update": "EditOwner"
        }
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "prj_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid"
        }
      },
      {
        "name": "number",
        "attr": {
          "type": "String",
          "column": "prj_number",
          "isNaturalKey":true,
          "required": true
        }
      },
      {
        "name": "projectType",
        "toOne": {
          "type": "ProjectType",
          "column": "prj_prjtype_id"
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "prj_name",
          "required": true
        }
      },
      {
        "name": "account",
        "toOne": {
          "isNested": true,
          "type": "AccountRelation",
          "column": "prj_crmacct_id"
        }
      },
      {
        "name": "contact",
        "toOne": {
          "isNested": true,
          "type": "ContactRelation",
          "column": "prj_cntct_id"
        }
      },
      {
        "name": "notes",
        "attr": {
          "type": "String",
          "column": "prj_descrip"
        }
      },
      {
        "name": "startDate",
        "attr": {
          "type": "Date",
          "column": "prj_start_date"
        }
      },
      {
        "name": "dueDate",
        "attr": {
          "type": "DueDate",
          "column": "prj_due_date",
          "required": true
        }
      },
      {
        "name": "assignDate",
        "attr": {
          "type": "Date",
          "column": "prj_assigned_date"
        }
      },
      {
        "name": "completeDate",
        "attr": {
          "type": "Date",
          "column": "prj_completed_date"
        }
      },
      {
        "name": "assignedTo",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "prj_username",
          "inverse": "username"
        }
      },
      {
        "name": "status",
        "attr": {
          "type": "String",
          "column": "prj_status",
          "required": true
        }
      },
      {
        "name": "owner",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "prj_owner_username",
          "inverse": "username"
        }
      },
      {
        "name": "budgetedHoursTotal",
        "attr": {
          "type": "Hours",
          "derived": true,
          "method": "xt.prj_budget_hrs(prj_id)"
        }
      },
      {
        "name": "actualHoursTotal",
        "attr": {
          "type": "Hours",
          "derived": true,
          "method": "xt.prj_actual_hrs(prj_id)"
        }
      },
      {
        "name": "balanceHoursTotal",
        "attr": {
          "type": "Hours",
          "derived": true,
          "method": "xt.prj_balance_hrs(prj_id)"
        }
      },
      {
        "name": "budgetedExpensesTotal",
        "attr": {
          "type": "Money",
          "derived": true,
          "method": "xt.prj_budget_exp(prj_id)"
        }
      },
      {
        "name": "actualExpensesTotal",
        "attr": {
          "type": "Money",
          "derived": true,
          "method": "xt.prj_actual_exp(prj_id)"
        }
      },
      {
        "name": "balanceExpensesTotal",
        "attr": {
          "type": "Money",
          "derived": true,
          "method": "xt.prj_balance_exp(prj_id)"
        }
      },
      {
        "name": "recurrences",
        "toMany": {
          "isNested": true,
          "type": "ProjectRecurrence",
          "column": "prj_id",
          "inverse": "project"
        }
      },
      {
        "name": "comments",
        "toMany": {
          "isNested": true,
          "type": "ProjectComment",
          "column": "prj_id",
          "inverse": "project"
        }
      },
      {
        "name": "tasks",
        "toMany": {
          "isNested": true,
          "type": "ProjectTask",
          "column": "prj_id",
          "inverse": "project"
        }
      },
      {
        "name": "characteristics",
        "toMany": {
          "isNested": true,
          "type": "ProjectCharacteristic",
          "column": "prj_id",
          "inverse": "project"
        }
      },
      {
        "name": "documents",
        "toMany": {
          "type": "DocumentAssociation",
          "column": "prj_id",
          "inverse": "source",
          "sourceType": "J",
          "isNested": true
        }
      },
      {
        "name": "workflow",
        "toMany": {
          "isNested": true,
          "type": "ProjectWorkflow",
          "column": "obj_uuid",
          "inverse": "parent"
        }
      }
    ],
    "extensions": [
      {
        "table": "xt.prjext",
        "relations": [
          {
            "column": "prjext_id",
            "inverse": "id"
          }
        ],
        "properties": [
          {
            "name": "department",
            "toOne": {
              "type": "Department",
              "column": "prjext_dept_id"
            }
          },
          {
            "name": "priority",
            "toOne": {
              "type": "Priority",
              "column": "prjext_priority_id"
            }
          },
          {
            "name": "percentComplete",
            "attr": {
              "type": "Percent",
              "column": "prjext_pct_complete",
              "required": true
            }
          }
        ]
      }
    ],
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectWorkflow",
    "table": "xt.prjwf",
    "comment": "Project Workflow Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "wf_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "parent",
        "attr": {
          "type": "String",
          "column": "wf_parent_uuid"
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "wf_name",
          "required": true
        }
      },
      {
        "name": "description",
        "attr": {
          "type": "String",
          "column": "wf_description"
        }
      },
      {
        "name": "status",
        "attr": {
          "type": "String",
          "column": "wf_status"
        }
      },
      {
        "name": "startDate",
        "attr": {
          "type": "Date",
          "column": "wf_start_date"
        }
      },
      {
        "name": "dueDate",
        "attr": {
          "type": "DueDate",
          "column": "wf_due_date"
        }
      },
      {
        "name": "assignDate",
        "attr": {
          "type": "Date",
          "column": "wf_assigned_date"
        }
      },
      {
        "name": "completeDate",
        "attr": {
          "type": "Date",
          "column": "wf_completed_date"
        }
      },
      {
        "name": "notes",
        "attr": {
          "type": "String",
          "column": "wf_notes"
        }
      },
      {
        "name": "priority",
        "toOne": {
          "type": "Priority",
          "column": "wf_priority_id",
          "required": true
        }
      },
      {
        "name": "sequence",
        "attr": {
          "type": "Number",
          "column": "wf_sequence"
        }
      },
      {
        "name": "owner",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "wf_owner_username",
          "inverse": "username"
        }
      },
      {
        "name": "assignedTo",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "wf_assigned_username",
          "inverse": "username"
        }
      },
      {
        "name": "completedParentStatus",
        "attr": {
          "type": "String",
          "column": "wf_completed_parent_status"
        }
      },
      {
        "name": "deferredParentStatus",
        "attr": {
          "type": "String",
          "column": "wf_deferred_parent_status"
        }
      },
      {
        "name": "completedSuccessors",
        "attr": {
          "type": "String",
          "column": "wf_completed_successors"
        }
      },
      {
        "name": "deferredSuccessors",
        "attr": {
          "type": "String",
          "column": "wf_deferred_successors"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectWorkflowRelation",
    "table": "xt.prjwf",
    "comment": "Project Workflow Relation Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "wf_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "parent",
        "attr": {
          "type": "String",
          "column": "wf_parent_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "wf_name",
          "required": true
        }
      },
      {
        "name": "status",
        "attr": {
          "type": "String",
          "column": "wf_status"
        }
      },
      {
        "name": "owner",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "wf_owner_username",
          "inverse": "username"
        }
      },
      {
        "name": "assignedTo",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "wf_assigned_username",
          "inverse": "username"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectComment",
    "table": "comment",
    "idSequenceName": "comment_comment_id_seq",
    "comment": "Project Comment Map",
    "privileges": {
      "all": {
        "create": true,
        "read": true,
        "update": "EditOthersComments",
        "delete": false
      },
      "personal": {
        "update": "EditOwnComments",
        "properties": [
          "createdBy"
        ]
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "comment_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "sourceType",
        "attr": {
          "type": "String",
          "column": "comment_source",
          "value": "J"
        }
      },
      {
        "name": "project",
        "attr": {
          "type": "Number",
          "column": "comment_source_id"
        }
      },
      {
        "name": "commentType",
        "toOne": {
          "type": "CommentType",
          "column": "comment_cmnttype_id",
          "required": true
        }
      },
      {
        "name": "text",
        "attr": {
          "type": "String",
          "column": "comment_text"
        }
      },
      {
        "name": "isPublic",
        "attr": {
          "type": "Boolean",
          "column": "comment_public",
          "value": true
        }
      },
      {
        "name": "created",
        "attr": {
          "type": "Date",
          "column": "comment_date"
        }
      },
      {
        "name": "createdBy",
        "attr": {
          "type": "String",
          "column": "comment_user"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectTaskRelation",
    "table": "prjtask",
    "comment": "Project Task Relation Map",
    "privileges": {
     "all": {
       "create": false,
       "read": true,
       "update": false,
       "delete": false
     }
    },
    "properties": [
     {
       "name": "id",
       "attr": {
         "type": "Number",
         "column": "prjtask_id",
         "isPrimaryKey": true
       }
     },
     {
       "name": "uuid",
       "attr": {
         "type": "String",
         "column": "obj_uuid",
         "isNaturalKey": true
       }
     },
     {
       "name": "project",
       "attr": {
         "type": "Number",
         "column": "prjtask_prj_id"
       }
     },
     {
       "name": "number",
       "attr": {
         "type": "String",
         "column": "prjtask_number"
       }
     },
     {
       "name": "name",
       "attr": {
         "type": "String",
         "column": "prjtask_name"
       }
     },
     {
       "name": "status",
       "attr": {
         "type": "String",
         "column": "prjtask_status"
       }
     }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "TaskProjectRelation",
    "table": "xt.prjinfo",
    "isRest": true,
    "comment": "Task Project Relation Map",
    "privileges": {
     "all": {
       "create": false,
       "read": true,
       "update": false,
       "delete": false
     }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "prj_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "number",
        "attr": {
          "type": "String",
          "column": "prj_number",
          "isNaturalKey":true
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "prj_name"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "TaskRelation",
    "table": "prjtask",
    "comment": "Project Task Relation Map",
    "properties": [
     {
       "name": "id",
       "attr": {
         "type": "Number",
         "column": "prjtask_id",
         "isPrimaryKey": true
       }
     },
     {
       "name": "uuid",
       "attr": {
         "type": "String",
         "column": "obj_uuid",
         "isNaturalKey": true
       }
     },
     {
       "name": "project",
       "toOne": {
         "isNested": true,
         "type": "TaskProjectRelation",
         "column": "prjtask_prj_id"
       }
     },
     {
       "name": "number",
       "attr": {
         "type": "String",
         "column": "prjtask_number"
       }
     },
     {
       "name": "name",
       "attr": {
         "type": "String",
         "column": "prjtask_name"
       }
     },
     {
       "name": "status",
       "attr": {
         "type": "String",
         "column": "prjtask_status"
       }
     }
    ],
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectRecurrence",
    "table": "recur",
    "idSequenceName": "recur_recur_id_seq",
    "comment": "Project Recurrence Map",
    "privileges": {
      "all": {
        "create": true,
        "read": true,
        "update": true,
        "delete": true
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "recur_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "parentType",
        "attr": {
          "type": "String",
          "column": "recur_parent_type",
          "value": "J"
        }
      },
      {
        "name": "project",
        "attr": {
          "type": "Number",
          "column": "recur_parent_id"
        }
      },
      {
        "name": "period",
        "attr": {
          "type": "String",
          "column": "recur_period"
        }
      },
      {
        "name": "frequency",
        "attr": {
          "type": "Number",
          "column": "recur_freq"
        }
      },
      {
        "name": "startDate",
        "attr": {
          "type": "Date",
          "column": "recur_start"
        }
      },
      {
        "name": "endDate",
        "attr": {
          "type": "Date",
          "column": "recur_end"
        }
      },
      {
        "name": "maximum",
        "attr": {
          "type": "Number",
          "column": "recur_max"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectTask",
    "table": "prjtask",
    "idSequenceName": "prjtask_prjtask_id_seq",
    "comment": "Project Task Map",
    "privileges": {
      "all": {
        "create": "MaintainAllProjects",
        "read": "ViewAllProjects",
        "update": "MaintainAllProjects",
        "delete": "MaintainAllProjects"
      },
      "personal": {
        "create": "MaintainPersonalProjects",
        "read": "ViewPersonalProjects",
        "update": "MaintainPersonalProjects",
        "delete": "MaintainPersonalProjects",
        "properties": [
          "owner.username",
          "assignedTo.username",
          "projectOwner.username",
          "projectAssignedTo.username"
        ]
      },
      "attribute": {
        "owner": {
          "create": "EditOwner",
          "update": "EditOwner"
        }
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "prjtask_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "number",
        "attr": {
          "type": "String",
          "column": "prjtask_number",
          "required": true
        }
      },
      {
        "name": "project",
        "attr": {
          "type": "Number",
          "column": "prjtask_prj_id",
          "required": true
        }
      },
      {
        "name": "name",
        "attr": {
          "type": "String",
          "column": "prjtask_name",
          "required": true
        }
      },
      {
        "name": "notes",
        "attr": {
          "type": "String",
          "column": "prjtask_descrip"
        }
      },
      {
        "name": "status",
        "attr": {
          "type": "String",
          "column": "prjtask_status",
          "required": true
        }
      },
      {
        "name": "budgetedHours",
        "attr": {
          "type": "Hours",
          "column": "prjtask_hours_budget"
        }
      },
      {
        "name": "actualHours",
        "attr": {
          "type": "Hours",
          "column": "prjtask_hours_actual"
        }
      },
      {
        "name": "budgetedExpenses",
        "attr": {
          "type": "Money",
          "column": "prjtask_exp_budget"
        }
      },
      {
        "name": "actualExpenses",
        "attr": {
          "type": "Money",
          "column": "prjtask_exp_actual"
        }
      },
      {
        "name": "startDate",
        "attr": {
          "type": "Date",
          "column": "prjtask_start_date"
        }
      },
      {
        "name": "dueDate",
        "attr": {
          "type": "DueDate",
          "column": "prjtask_due_date",
          "required": true
        }
      },
      {
        "name": "assignDate",
        "attr": {
          "type": "Date",
          "column": "prjtask_assigned_date"
        }
      },
      {
        "name": "completeDate",
        "attr": {
          "type": "Date",
          "column": "prjtask_completed_date"
        }
      },
      {
        "name": "assignedTo",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "prjtask_username",
          "inverse": "username"
        }
      },
      {
        "name": "owner",
        "toOne": {
          "isNested": true,
          "type": "UserAccountRelation",
          "column": "prjtask_owner_username",
          "inverse": "username"
        }
      },
      {
        "name": "comments",
        "toMany": {
          "isNested": true,
          "type": "ProjectTaskComment",
          "column": "prjtask_id",
          "inverse": "project_task"
        }
      },
      {
        "name": "alarms",
        "toMany": {
          "isNested": true,
          "type": "ProjectTaskAlarm",
          "column": "prjtask_id",
          "inverse": "project_task"
        }
      },
      {
        "name": "characteristics",
        "toMany": {
          "isNested": true,
          "type": "ProjectTaskCharacteristic",
          "column": "prjtask_id",
          "inverse": "projectTask"
        }
      },  
      {
        "name": "resources",
        "toMany": {
          "isNested": true,
          "type": "TaskResource",
          "column": "prjtask_id",
          "inverse": "task"
        }
      }
    ],
    "extensions": [
      {
        "table": "prj",
        "isChild": true,
        "relations": [
          {
            "column": "prj_id",
            "inverse": "project"
          }
        ],
        "properties": [
          {
            "name": "projectAssignedTo",
            "toOne": {
              "isNested": true,
              "type": "UserAccountRelation",
              "column": "prj_username",
              "inverse": "username"
            }
          },
          {
            "name": "projectOwner",
            "toOne": {
              "isNested": true,
              "type": "UserAccountRelation",
              "column": "prj_owner_username",
              "inverse": "username"
            }
          }
        ]
      },
      {
        "table": "xt.prjtaskext",
        "relations": [
          {
            "column": "prjtaskext_id",
            "inverse": "id"
          }
        ],
        "properties": [
          {
            "name": "priority",
            "toOne": {
              "type": "Priority",
              "column": "prjtaskext_priority_id"
            }
          },
          {
            "name": "percentComplete",
            "attr": {
              "type": "Percent",
              "column": "prjtaskext_pct_complete",
              "required": true
            }
          }
        ]
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectTaskAlarm",
    "table": "alarm",
    "idSequenceName": "alarm_alarm_id_seq",
    "orderSequence": "AlarmNumber",
    "comment": "Project Task Alarm Map",
    "privileges": {
      "all": {
        "create": true,
        "read": true,
        "update": true,
        "delete": true
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "alarm_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "number",
        "attr": {
          "type": "String",
          "column": "alarm_number"
        }
      },
      {
        "name": "sourceType",
        "attr": {
          "type": "String",
          "column": "alarm_source",
          "value": "TA"
        }
      },
      {
        "name": "projectTask",
        "attr": {
          "type": "Number",
          "column": "alarm_source_id"
        }
      },
      {
        "name": "isEvent",
        "attr": {
          "type": "Boolean",
          "column": "alarm_event"
        }
      },
      {
        "name": "eventRecipient",
        "attr": {
          "type": "String",
          "column": "alarm_event_recipient"
        }
      },
      {
        "name": "isMessage",
        "attr": {
          "type": "Boolean",
          "column": "alarm_sysmsg"
        }
      },
      {
        "name": "messageRecipient",
        "attr": {
          "type": "String",
          "column": "alarm_sysmsg_recipient"
        }
      },
      {
        "name": "offset",
        "attr": {
          "type": "Number",
          "column": "alarm_time_offset"
        }
      },
      {
        "name": "qualifier",
        "attr": {
          "type": "String",
          "column": "alarm_time_qualifier"
        }
      },
      {
        "name": "time",
        "attr": {
          "type": "Date",
          "column": "alarm_time"
        }
      },
      {
        "name": "trigger",
        "attr": {
          "type": "Date",
          "column": "alarm_trigger"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectTaskComment",
    "table": "comment",
    "idSequenceName": "comment_comment_id_seq",
    "comment": "Project Task Comment Map",
    "privileges": {
      "all": {
        "create": true,
        "read": true,
        "update": "EditOthersComments",
        "delete": false
      },
      "personal": {
        "update": "EditOwnComments",
        "properties": [
          "createdBy"
        ]
      }
    },
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "comment_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "sourceType",
        "attr": {
          "type": "String",
          "column": "comment_source",
          "value": "TA"
        }
      },
      {
        "name": "projectTask",
        "attr": {
          "type": "Number",
          "column": "comment_source_id"
        }
      },
      {
        "name": "commentType",
        "toOne": {
          "type": "CommentType",
          "column": "comment_cmnttype_id",
          "required": true
        }
      },
      {
        "name": "text",
        "attr": {
          "type": "String",
          "column": "comment_text"
        }
      },
      {
        "name": "isPublic",
        "attr": {
          "type": "Boolean",
          "column": "comment_public",
          "value": true
        }
      },
      {
        "name": "created",
        "attr": {
          "type": "Date",
          "column": "comment_date"
        }
      },
      {
        "name": "createdBy",
        "attr": {
          "type": "String",
          "column": "comment_user"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectCharacteristic",
    "table": "charass",
    "idSequenceName": "charass_charass_id_seq",
    "comment": "Project Characteristic Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "charass_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "targetType",
        "attr": {
          "type": "String",
          "column": "charass_target_type",
          "value": "PROJ"
        }
      },
      {
        "name": "project",
        "attr": {
          "type": "Number",
          "column": "charass_target_id"
        }
      },
      {
        "name": "characteristic",
        "toOne": {
          "type": "Characteristic",
          "column": "charass_char_id",
          "required": true
        }
      },
      {
        "name": "value",
        "attr": {
          "type": "String",
          "column": "charass_value"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "ProjectTaskCharacteristic",
    "table": "charass",
    "idSequenceName": "charass_charass_id_seq",
    "comment": "Project Task Characteristic Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "charass_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "targetType",
        "attr": {
          "type": "String",
          "column": "charass_target_type",
          "value": "TASK"
        }
      },
      {
        "name": "projectTask",
        "attr": {
          "type": "Number",
          "column": "charass_target_id"
        }
      },
      {
        "name": "characteristic",
        "toOne": {
          "type": "Characteristic",
          "column": "charass_char_id",
          "required": true
        }
      },
      {
        "name": "value",
        "attr": {
          "type": "String",
          "column": "charass_value"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "TaskCharacteristic",
    "table": "charass",
    "idSequenceName": "charass_charass_id_seq",
    "comment": "Task Characteristic Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "charass_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "targetType",
        "attr": {
          "type": "String",
          "column": "charass_target_type",
          "value": "TASK"
        }
      },
      {
        "name": "task",
        "attr": {
          "type": "Number",
          "column": "charass_target_id"
        }
      },
      {
        "name": "characteristic",
        "toOne": {
          "type": "Characteristic",
          "column": "charass_char_id",
          "required": true
        }
      },
      {
        "name": "value",
        "attr": {
          "type": "String",
          "column": "charass_value"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  },
  {
    "context": "project",
    "nameSpace": "XM",
    "type": "TaskListItemCharacteristic",
    "table": "charass",
    "idSequenceName": "charass_charass_id_seq",
    "comment": "Task List Item Characteristic Map",
    "properties": [
      {
        "name": "id",
        "attr": {
          "type": "Number",
          "column": "charass_id",
          "isPrimaryKey": true
        }
      },
      {
        "name": "uuid",
        "attr": {
          "type": "String",
          "column": "obj_uuid",
          "isNaturalKey": true
        }
      },
      {
        "name": "targetType",
        "attr": {
          "type": "String",
          "column": "charass_target_type",
          "value": "TASK"
        }
      },
      {
        "name": "task",
        "attr": {
          "type": "Number",
          "column": "charass_target_id"
        }
      },
      {
        "name": "characteristic",
        "toOne": {
          "type": "Characteristic",
          "column": "charass_char_id",
          "required": true
        }
      },
      {
        "name": "value",
        "attr": {
          "type": "String",
          "column": "charass_value"
        }
      }
    ],
    "isNestedOnly": true,
    "isSystem": true
  }
]
