Projects and MDR settings
Module: reference (Projects) and dms_reference (the MDR settings). Everything that has to be configured per project before documents can be imported, uploaded and routed.
How this page was verified
Written from master on 2026-09-06 and compared with the big five the same day. No earlier page existed.
The project row
Reference, Projects (projects.php, form ref_projects_form.htm) creates and edits ts_projects. The form asks for:
| Field | Column | Notes |
|---|---|---|
| Project Code | project_code | validated for uniqueness (cmd=validateProjectCode); read-only after creation |
| Contract No | project_contract_no | |
| Project Name, Description | project_name, project_desc | |
| Start Date, Completion Date | project_start, project_complete_date | |
| Owner company | owner_id | the label is project_company_internal_label, default "Main Company" |
| External company | company_id | the label is project_company_external_label, default "Third Party" |
| MDR Matrix Type | matrix_type | issued_status (default), transmission_type or doc_number. Column added March 2025. |
| Project Status | project_status | |
| Batch Routing | batch_routing | 1 moves the DocCon (D) sign-off into the External Transmission flow, see Action Indicated |
Columns the form does not show but code still reads: mdr_row_as_value_start (set from the MDR settings screen below), project_east_java (the legacy folder-shape integer, kept for Medco's Auto Folder Creation seed), project_numbering and project_numdetail (per-project document numbering, edited through cmd=docnum and act=edit_docnum), client_id, account_type_id, project_dav_path.
Deleting a project goes through cmd=validateDeleteProject first, which refuses when documents exist.
What each setting feeds
| Setting | Read by |
|---|---|
matrix_type | Import MDR, through getProjectMdrMatrixType(); decides how the User Matrix block is shaped |
mdr_row_as_value_start and the MDR template settings | Import MDR, first data row and column mapping |
| the file name setting | Upload, which parses number, revision and title from the filename |
| issued statuses and progress gates | Upload (review durations, next expected), the MDR progress and the Plan Date columns |
owner_id and the two company labels | the sign-off form's Next Expected gating, see Users and Privileges |
batch_routing | the D sign-off path |
| the transmittal default folders | Upload Transmittal and Return, which file their correspondence rows there |
MDR template settings
DMS Reference, Multi Project Setting (multi_project_setting.inc.php with its form and post handlers) is where the MDR spreadsheet layout is defined, per project, and copied between projects.
| Action | What it does |
|---|---|
mdrSettingList, mdrSettingSave | which columns of the catalog ts_mdr_column the project uses, with a custom caption and an import flag, stored in ts_mdr_template_setting (project_id, mdr_column_id, col_custom, is_import) |
mdrSettingDefault | reset to the default column set |
mdrSettingDownloadCurrent, mdrSettingDownloadDefault | download the Excel template built from the settings, with PhpSpreadsheet |
mdrSettingColumnCopy, mdrSettingColumnCopyProjectList | copy one project's settings to others |
mdrColumnCustomAZList | the custom column letters |
fileNameSettingList, fileNameSettingSave, fileNameSettingDefault | the filename scheme in ts_file_name_setting (file_name_setting_project_id, file_name_setting_data, file_name_setting_separator, file_name_preview) |
The screen also writes ts_projects.mdr_row_as_value_start, the row where data starts in the template.
ts_mdr_column is the catalog: name, data_type, doc_master_related_column (which ts_documents_master column it maps to), sample_data, defaults, is_custom, and the cell geometry (colspan, rowspan, width, align, valign, rotation) used when the template is written.
Issued statuses and progress gates
Both are generic reference editors bound through MODULE_REFERENCE_TABLE_CONFIG in src/basic/Base.php:
| Screen | Table | Columns |
|---|---|---|
DMS Reference, Issued Status (issued.php) | ts_issued_status | issued_no, issued_code, issued_desc, percentage, issued_rev, project_id, company_code, gate_code, issued_matrix (internal or external) |
DMS Reference, Progress Gate (progress_gate.php) | ts_progress_gate | sequence, gate_code, percentage, project_id, submission_progress |
DMS Reference, Review Time (workingdays.php) | working days per issued status | review durations |
An issued status is the unit the whole MDR progress is measured in: each one has a percentage, belongs to a gate, and says whether the matrix at that stage is internal or external. Master's Plan Date columns are one per issued status.
Transmittal default folders
Where an incoming Transmittal Sheet and an outgoing Transmittal Out are filed is a per-project choice in Reference, Library Index (corrindex.php): ts_incoming_transmittal_default_folder and ts_outgoing_transmittal_default_folder, each project_id plus library_id. Added June 2026. The transin and transout templates in projects.php are commented out; the settings moved to the index screen.
Database tables
| Table | Written by |
|---|---|
ts_projects | Projects form, docnum, Multi Project Setting |
ts_mdr_template_setting, ts_file_name_setting | Multi Project Setting |
ts_mdr_column | seed only; the catalog is not edited in the UI |
ts_issued_status, ts_progress_gate | their reference screens |
ts_incoming_transmittal_default_folder, ts_outgoing_transmittal_default_folder | Library Index |
ts_map_doc_lib_project, ts_corr_library | folder trees created per project |
Gotchas
- Change the matrix type only on an empty project. Import MDR shapes the matrix from it; documents imported under one type do not re-shape.
- The filename scheme is a contract with the client. Upload rejects every file that does not parse. Set it before the first upload and do not change it mid-project.
mdr_row_as_value_startis easy to get wrong. One row off and Import MDR reads the header line as a document.- The two company labels are display strings that gate logic. Renaming them without updating stored
organization_namevalues breaks Next Expected. See the known issue.
Instance differences
Checked on 2026-09-06.
| Instance | Difference |
|---|---|
| Jadestone | Related projects: a ts_projects_relations table (June 2026) and val_project_related_ids on the form, so one project can be linked to others. Also writes ts_adms_projects. |
| Timas | The same related-projects fields on the form. No matrix_type column; the matrix type is fixed. Writes ts_corr_library from the project form. |
| JOTRE | Adds a progress gate grouping list to the project form (val_pgate_grouping_list). Writes ts_corr_library from the project form. |
| Medco | Has a separate DMS Reference screen for the file name setting (file_name_setting.php) next to the multi-project one. |
Related
- Import MDR, Upload: the consumers of these settings.
- inweb_config: the installation-wide settings, as opposed to these per-project ones.