---
title: SAIF.Services.Printing.Remote database tables
summary: Database tables used by this library with relationships and usage context.
status: draft
owner: <owner>
last_reviewed: 2026-07-24
library: SAIF.Services.Printing.Remote
reference_type: package
---

# SAIF.Services.Printing.Remote database tables

This page catalogs database tables accessed by this library.

## Table catalog

| Table | Database | Schema/Link | CRUD | Purpose | Primary business object |
| --- | --- | --- | --- | --- | --- |
| [XPRINT_CONTROL](#xprint_control) | Oracle | `[unqualified]` | C/R/U/D | Print-control batch header | `clsXPrintControl` |
| [XDOCUMENT](#xdocument) | Oracle | `[unqualified]` | C/R/D | Individual print job document | `clsXDocument` |
| [XDEFERRED_PRINT](#xdeferred_print) | Oracle | `[unqualified]` | C/R/U/D | Deferred/queued print item | `clsXDeferredPrint` |
| [XPRINTER_BIN](#xprinter_bin) | Oracle | `[unqualified]` | R (join only) | Printer bin routing lookup | `clsXDocumentCollection` |
| [XPRINTER](#xprinter) | Oracle | `[unqualified]` | R (join only) | Physical printer lookup | `clsXDocumentCollection` |
| [DUAL](#dual) | Oracle (system) | N/A | R (scalar) | Oracle system pseudo-table; referenced only by dead/unwired sequence-select SQL | `clsXDeferredPrint`, `clsXDeferredPrintCollection`, `clsXPrintControlCollection` |

---

## XPRINT_CONTROL

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Stores print-control batch headers: directory, duplex mode, processed date, IDM path, XML file name, and MD5 hash for a set of documents queued for print processing. |
| **Access pattern** | Direct SQL via `IBusinessCriteria` |
| **CRUD operations** | Create (Insert), Read (Select), Update, Delete |
| **Key columns used** | `XPRINT_CONTROL_SEQ_NUM` (PK), `DIRECTORY_NAME`, `DUPLEX_CODE`, `PROCESSED_DATE`, `IDM_PATH_NAME`, `XML_FILE_NAME`, `MD5_HASH_VALUE`, `CREATE_DATE` |
| **Sequence** | None live in this library — `XPrintControlSeqNum` must be supplied by the caller; `DIRECTORY_NAME_NEXTVAL` in dead `CreateSQL` (SQL-003) is a CodeGen2 template artifact, not a real Oracle sequence.* |
| **Related tables** | `XDOCUMENT` (one-to-many via `XPRINT_CONTROL_SEQ_NUM`) |
| **Business objects** | `clsXPrintControl`, `clsXPrintControlCollection` |

### Operations referencing this table
- [Print-control batch header lifecycle](operations/print-control-batch-header-lifecycle.md)
- [Create a print batch with documents](operations/create-print-batch-with-documents.md)
- [Retrieve print-control batches pending processing](operations/retrieve-print-control-batches-pending-processing.md)

### Business rules referencing this table
- [BR-001: Row-count contention check](business-rules.md#br-001-row-count-contention-check)
- [BR-003: Print-control batch staleness rule](business-rules.md#br-003-print-control-batch-staleness-rule)
- [BR-004: Duplex mode controlled vocabulary](business-rules.md#br-004-duplex-mode-controlled-vocabulary)
- [BR-006: IDM path default](business-rules.md#br-006-idm-path-default)

### SQL referencing this table
- [SQL-003: clsXPrintControlCollection.CreateSQL (dead)](sql/SQL-003-saif-services-printing-remote.md)
- [SQL-007: clsXPrintControl.InsertSQL](sql/SQL-007-saif-services-printing-remote.md)
- [SQL-008: clsXPrintControlCollection.InsertSQL (dead)](sql/SQL-008-saif-services-printing-remote.md)
- [SQL-013: clsXPrintControl.RetrieveSQL](sql/SQL-013-saif-services-printing-remote.md)
- [SQL-014: clsXPrintControlCollection.RetrieveSQL](sql/SQL-014-saif-services-printing-remote.md)
- [SQL-017: clsXPrintControl.UpdateSQL](sql/SQL-017-saif-services-printing-remote.md)
- [SQL-018: clsXPrintControlCollection.UpdateSQL (dead)](sql/SQL-018-saif-services-printing-remote.md)
- [SQL-022: clsXPrintControl.DeleteSQL](sql/SQL-022-saif-services-printing-remote.md)
- [SQL-023: clsXPrintControlCollection.DeleteSQL](sql/SQL-023-saif-services-printing-remote.md)

---

## XDOCUMENT

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Stores individual print job documents linked to a print-control batch. Contains routing metadata (bin type, sort values), document type, email/fax routing, and print group text for sequencing and grouping. |
| **Access pattern** | Direct SQL via `IBusinessCriteria` |
| **CRUD operations** | Create (Insert), Read (Select), Delete — no live Update |
| **Key columns used** | `XDOCUMENT_SEQ_NUM` (PK), `XPRINT_CONTROL_SEQ_NUM` (FK), `XBIN_TYPE_CODE`, `COPIES_COUNT`, `FILE_NAME`, `DOCUMENT_TYPE_CODE`, `EMAIL_ADDRESS`, `FAX_NUM`, `IDX_CONTENTS_TEXT`, `SORT0_VALUE`–`SORT9_VALUE`, `START_VALUE`, `PRINT_GROUP_TEXT`, `DUPLEX_CODE` |
| **Sequence** | `XDOCUMENT_SEQ` — generated procedurally via `IDataPortalInfo.GetNextSeqNum("XDOCUMENT_SEQ")` in `clsXDocument.Create()` |
| **Related tables** | `XPRINT_CONTROL` (many-to-one via `XPRINT_CONTROL_SEQ_NUM`), `XPRINTER_BIN` (routing join via `XBIN_TYPE_CODE`) |
| **Business objects** | `clsXDocument`, `clsXDocumentCollection` |

### Operations referencing this table
- [Create a print batch with documents](operations/create-print-batch-with-documents.md)
- [Retrieve documents for printing](operations/retrieve-documents-for-printing.md)
- [Delete documents for a batch](operations/delete-documents-for-a-batch.md)

### Business rules referencing this table
- [BR-001: Row-count contention check](business-rules.md#br-001-row-count-contention-check)
- [BR-004: Duplex mode controlled vocabulary](business-rules.md#br-004-duplex-mode-controlled-vocabulary)
- [BR-005: Default bin type on document creation](business-rules.md#br-005-default-bin-type-on-document-creation)

### SQL referencing this table
- [SQL-006: clsXDocument.InsertSQL](sql/SQL-006-saif-services-printing-remote.md)
- [SQL-011: clsXDocumentCollection.RetrieveSQL](sql/SQL-011-saif-services-printing-remote.md)
- [SQL-012: clsXDocumentCollection.RetrievePrintSQL](sql/SQL-012-saif-services-printing-remote.md)
- [SQL-021: clsXDocumentCollection.DeleteSQL](sql/SQL-021-saif-services-printing-remote.md)

---

## XDEFERRED_PRINT

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Stores deferred (queued) print requests awaiting later batch processing. Captures copies count, document description, duplex code, file name, printed date, sort values, and an XML payload blob. |
| **Access pattern** | Direct SQL via `IBusinessCriteria` |
| **CRUD operations** | Create (Insert), Read (Select), Update, Delete |
| **Key columns used** | `XDEFERRED_SEQ_NUM` (PK), `COPIES_COUNT`, `CREATE_DATE`, `CREATE_USER`, `DOCUMENT_DESCR`, `DUPLEX_CODE`, `FILE_NAME`, `PRINTED_DATE`, `SORT0_VALUE`–`SORT9_VALUE`, `XML_VALUE_TEXT` |
| **Sequence** | `XDeferred_SEQ` — generated procedurally via `IDataPortalInfo.GetNextSeqNum("XDeferred_SEQ")` in `clsXDeferredPrint.Create()`. `COPIES_COUNT_NEXTVAL` in dead `CreateSQL` properties (SQL-001, SQL-002) is a CodeGen2 template artifact.* |
| **Related tables** | None directly joined in live SQL |
| **Business objects** | `clsXDeferredPrint`, `clsXDeferredPrintCollection` |

### Operations referencing this table
- [Deferred print queue lifecycle](operations/deferred-print-queue-lifecycle.md)

### Business rules referencing this table
- [BR-001: Row-count contention check](business-rules.md#br-001-row-count-contention-check)
- [BR-002: Deferred print retention/eligibility rule](business-rules.md#br-002-deferred-print-retentioneligibility-rule)
- [BR-004: Duplex mode controlled vocabulary](business-rules.md#br-004-duplex-mode-controlled-vocabulary)

### SQL referencing this table
- [SQL-001: clsXDeferredPrint.CreateSQL (dead)](sql/SQL-001-saif-services-printing-remote.md)
- [SQL-002: clsXDeferredPrintCollection.CreateSQL (dead)](sql/SQL-002-saif-services-printing-remote.md)
- [SQL-004: clsXDeferredPrint.InsertSQL](sql/SQL-004-saif-services-printing-remote.md)
- [SQL-005: clsXDeferredPrintCollection.InsertSQL (dead)](sql/SQL-005-saif-services-printing-remote.md)
- [SQL-009: clsXDeferredPrint.RetrieveSQL (dead)](sql/SQL-009-saif-services-printing-remote.md)
- [SQL-010: clsXDeferredPrintCollection.RetrieveSQL](sql/SQL-010-saif-services-printing-remote.md)
- [SQL-015: clsXDeferredPrint.UpdateSQL](sql/SQL-015-saif-services-printing-remote.md)
- [SQL-016: clsXDeferredPrintCollection.UpdateSQL (dead)](sql/SQL-016-saif-services-printing-remote.md)
- [SQL-019: clsXDeferredPrint.DeleteSQL](sql/SQL-019-saif-services-printing-remote.md)
- [SQL-020: clsXDeferredPrintCollection.DeleteSQL (dead)](sql/SQL-020-saif-services-printing-remote.md)

---

## XPRINTER_BIN

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Lookup table mapping printer IDs and bin type codes to physical bin numbers. Joined at read time to resolve print routing for a given printer. |
| **Access pattern** | Direct SQL via `IBusinessCriteria` (read/join only) |
| **CRUD operations** | Read (SELECT — join only) |
| **Key columns used** | `PRINTER_ID`, `XBIN_TYPE_CODE`, `BIN_NUM` |
| **Sequence** | N/A |
| **Related tables** | `XPRINTER` (many-to-one via `PRINTER_ID`), `XDOCUMENT` (routing join via `XBIN_TYPE_CODE`) |
| **Business objects** | `clsXDocumentCollection` |

### Operations referencing this table
- [Retrieve documents for printing](operations/retrieve-documents-for-printing.md)

### SQL referencing this table
- [SQL-011: clsXDocumentCollection.RetrieveSQL](sql/SQL-011-saif-services-printing-remote.md)
- [SQL-012: clsXDocumentCollection.RetrievePrintSQL](sql/SQL-012-saif-services-printing-remote.md)

---

## XPRINTER

| Field | Value |
| --- | --- |
| **Database** | Oracle |
| **Schema/Link** | `[unqualified]**` |
| **Purpose** | Lookup table providing the network name of a physical printer. Joined at read time to resolve the printer network name for document routing. |
| **Access pattern** | Direct SQL via `IBusinessCriteria` (read/join only) |
| **CRUD operations** | Read (SELECT — join only) |
| **Key columns used** | `PRINTER_ID`, `NETWORK_NAME` |
| **Sequence** | N/A |
| **Related tables** | `XPRINTER_BIN` (one-to-many via `PRINTER_ID`) |
| **Business objects** | `clsXDocumentCollection` |

### Operations referencing this table
- [Retrieve documents for printing](operations/retrieve-documents-for-printing.md)

### SQL referencing this table
- [SQL-011: clsXDocumentCollection.RetrieveSQL](sql/SQL-011-saif-services-printing-remote.md)
- [SQL-012: clsXDocumentCollection.RetrievePrintSQL](sql/SQL-012-saif-services-printing-remote.md)

---

## DUAL

| Field | Value |
| --- | --- |
| **Database** | Oracle (system pseudo-table) |
| **Schema/Link** | N/A — Oracle built-in system object |
| **Purpose** | Oracle's single-row pseudo-table, referenced by the three dead `CreateSQL` sequence-select properties (SQL-001, SQL-002, SQL-003) as CodeGen2 template artifacts. Not used by any live code path in this library. |
| **Access pattern** | Referenced in dead/unwired `Criteria.CreateSQL` properties only |
| **CRUD operations** | R (scalar select — dead code only) |
| **Key columns used** | None (scalar select of a literal token) |
| **Sequence** | N/A |
| **Related tables** | None |
| **Business objects** | `clsXDeferredPrint`, `clsXDeferredPrintCollection`, `clsXPrintControlCollection` |

### SQL referencing this table
- [SQL-001: clsXDeferredPrint.CreateSQL (dead)](sql/SQL-001-saif-services-printing-remote.md)
- [SQL-002: clsXDeferredPrintCollection.CreateSQL (dead)](sql/SQL-002-saif-services-printing-remote.md)
- [SQL-003: clsXPrintControlCollection.CreateSQL (dead)](sql/SQL-003-saif-services-printing-remote.md)

---

## Table relationship diagram

The following diagram shows verifiable relationships between the primary tables used by this library.

```mermaid
erDiagram
    XPRINT_CONTROL ||--o{ XDOCUMENT : "XPRINT_CONTROL_SEQ_NUM (one-to-many)*"
    XPRINTER ||--o{ XPRINTER_BIN : "PRINTER_ID (one-to-many)"
    XPRINTER_BIN }o--o{ XDOCUMENT : "XBIN_TYPE_CODE + PRINTER_ID (routing join)"
    XPRINT_CONTROL {
        NUMBER XPRINT_CONTROL_SEQ_NUM PK
        VARCHAR2 DIRECTORY_NAME
        VARCHAR2 DUPLEX_CODE
        DATE PROCESSED_DATE
        DATE CREATE_DATE
        VARCHAR2 IDM_PATH_NAME
        VARCHAR2 XML_FILE_NAME
        VARCHAR2 MD5_HASH_VALUE
    }
    XDOCUMENT {
        NUMBER XDOCUMENT_SEQ_NUM PK
        NUMBER XPRINT_CONTROL_SEQ_NUM FK
        VARCHAR2 XBIN_TYPE_CODE
        NUMBER COPIES_COUNT
        VARCHAR2 FILE_NAME
        VARCHAR2 PRINT_GROUP_TEXT
        VARCHAR2 DUPLEX_CODE
    }
    XPRINTER {
        VARCHAR2 PRINTER_ID PK
        VARCHAR2 NETWORK_NAME
    }
    XPRINTER_BIN {
        VARCHAR2 PRINTER_ID FK
        VARCHAR2 XBIN_TYPE_CODE
        NUMBER BIN_NUM
    }
    XDEFERRED_PRINT {
        NUMBER XDEFERRED_SEQ_NUM PK
        VARCHAR2 DOCUMENT_DESCR
        VARCHAR2 DUPLEX_CODE
        DATE PRINTED_DATE
        DATE CREATE_DATE
        NUMBER COPIES_COUNT
        NCLOB XML_VALUE_TEXT
    }
```

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

## Sources
- `Services\SAIF.Services.Printing.Remote\clsXPrintControl.vb`
- `Services\SAIF.Services.Printing.Remote\clsXPrintControlCollection.vb`
- `Services\SAIF.Services.Printing.Remote\clsXDocument.vb`
- `Services\SAIF.Services.Printing.Remote\clsXDocumentCollection.vb`
- `Services\SAIF.Services.Printing.Remote\clsXDeferredPrint.vb`
- `Services\SAIF.Services.Printing.Remote\clsXDeferredPrintCollection.vb`
