---
title: SAIF.Business.CustomerContact database tables
summary: Database tables used by this library with relationships and usage context.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business.CustomerContact
reference_type: package
---

# SAIF.Business.CustomerContact database tables

This page catalogs Oracle tables accessed by `SAIF.Business.CustomerContact`.

## Table catalog

| Table | Database | Schema/Link | CRUD | Purpose | Primary business object |
| --- | --- | --- | --- | --- | --- |
| [ADDRESS](#address) | Oracle | `[unqualified]**` | CDRU | Stores standalone address records that can be linked to either customers or contacts. | `clsAddressInfo`, `clsContactAddressCollection`, `clsCustomerAddressCollection` |
| [AGENCY](#agency) | Oracle | `[unqualified]**` | R | Supplies source agency data used during external-to-local customer conversion. | `mdlCustomerContact` |
| [AGENT](#agent) | Oracle | `[unqualified]**` | R | Supplies source agent data used during external-to-local customer and contact conversion. | `mdlCustomerContact` |
| [COMPANY](#company) | Oracle | `[unqualified]**` | CDRU | Stores the root customer record created and maintained by this library. | `clsContact`, `clsCustomer`, `clsCustomerCollection` |
| [COMPANY_ADDRESS](#company-address) | Oracle | `[unqualified]**` | CDR | Associates customer records with standalone address rows. | `clsCustomerAddressCollection` |
| [COMPANY_ADDRESS_PHONE](#company-address-phone) | Oracle | `[unqualified]**` | R | Extends customer-address retrieval with address-linked phone data.* | `clsCustomerAddressCollection` |
| [COMPANY_EMAIL](#company-email) | Oracle | `[unqualified]**` | CDR | Associates customer records with standalone email-address rows. | `clsCustomerEmailCollection` |
| [COMPANY_NOTE](#company-note) | Oracle | `[unqualified]**` | CDRU | Stores long-form notes attached to customer records. | `clsCustomerNote` |
| [COMPANY_PERSON](#company-person) | Oracle | `[unqualified]**` | CDRU | Stores customer-to-contact relationship rows. | `clsContact`, `clsContactCollection`, `clsCustomerCollection`, `clsCustomerContact`, `clsCustomerContactCollection` |
| [COMPANY_PHONE](#company-phone) | Oracle | `[unqualified]**` | CDR | Associates customer records with standalone phone rows. | `clsCustomerPhoneCollection` |
| [CUSTOMER_AGENCY](#customer-agency) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between agency identifiers and local customer records. | `mdlCustomerContact` |
| [CUSTOMER_AGENT](#customer-agent) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between agent identifiers and local customer/contact records. | `mdlCustomerContact` |
| [CUSTOMER_AUDITOR](#customer-auditor) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between auditor identifiers and local customer records. | `mdlCustomerContact` |
| [CUSTOMER_GROUP](#customer-group) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between group-association identifiers and local customer records. | `mdlCustomerContact` |
| [CUSTOMER_POLICY](#customer-policy) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between policy identifiers and local customer records. | `mdlCustomerContact` |
| [CUSTOMER_PROVIDER](#customer-provider) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between provider identifiers and local customer records. | `mdlCustomerContact` |
| [CUSTOMER_SOURCE](#customer-source) | Oracle | `[unqualified]**` | CR | Stores lookup mappings between source-system identifiers and local customer records. | `mdlCustomerContact` |
| [EMAIL_ADDRESS](#email-address) | Oracle | `[unqualified]**` | CDRU | Stores standalone email-address records that can be linked to either customers or contacts. | `clsContactEmailCollection`, `clsCustomerEmailCollection`, `clsEmailAddressInfo` |
| [GROUP_ASSOCIATION](#group-association) | Oracle | `[unqualified]**` | R | Supplies source group-association data used during external conversion flows. | `mdlCustomerContact` |
| [PA_AUDITOR](#pa-auditor) | Oracle | `[unqualified]**` | R | Supplies source auditor data used during external conversion flows. | `mdlCustomerContact` |
| [PERSON](#person) | Oracle | `[unqualified]**` | CDRU | Stores the root contact record created and maintained by this library. | `clsContact`, `clsContactCollection`, `clsCustomerContactCollection` |
| [PERSON_ADDRESS](#person-address) | Oracle | `[unqualified]**` | CDR | Associates contact records with standalone address rows. | `clsContactAddressCollection` |
| [PERSON_ADDRESS_PHONE](#person-address-phone) | Oracle | `[unqualified]**` | R | Extends contact-address retrieval with address-linked phone data.* | `clsContactAddressCollection` |
| [PERSON_EMAIL](#person-email) | Oracle | `[unqualified]**` | CDR | Associates contact records with standalone email-address rows. | `clsContactEmailCollection` |
| [PERSON_NOTE](#person-note) | Oracle | `[unqualified]**` | CDRU | Stores long-form notes attached to contact records. | `clsContactNote` |
| [PERSON_PHONE](#person-phone) | Oracle | `[unqualified]**` | CDR | Associates contact records with standalone phone rows. | `clsContactPhoneCollection` |
| [PHONE](#phone) | Oracle | `[unqualified]**` | CDRU | Stores standalone phone records that can be linked to either customers or contacts. | `clsContactPhoneCollection`, `clsCustomerPhoneCollection`, `clsPhoneInfo` |
| [POLICY](#policy) | Oracle | `[unqualified]**` | R | Supplies source policy data used during external conversion flows. | `mdlCustomerContact` |
| [PROVIDER](#provider) | Oracle | `[unqualified]**` | R | Supplies source provider data used during external conversion flows. | `mdlCustomerContact` |
| [PROVIDER_TAX_ID](#provider-tax-id) | Oracle | `[unqualified]**` | R | Supplies provider tax-identifier data used while creating provider-based customer records. | `mdlCustomerContact` |
| [RTW_LOAD_CODE](#rtw-load-code) | Oracle | `[unqualified]**` | R | Supplies return-to-work source data used during external conversion flows. | `mdlCustomerContact` |

---

## ADDRESS

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores standalone address records that can be linked to either customers or contacts. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | ACTIVE_FLAG, ADDRESS_CODE, ADDRESS_LINE1, ADDRESS_LINE2, ADDRESS_LINE3, ADDRESS_LINE4, ADDRESS_SEQ_NUM, CITY_NAME, COMPANY_SEQ_NUM, COUNTRY_CODE, COUNTY_CODE, CREATE_DATE, CREATE_USER, EFF_DT, EXP_DT, FOREIGN_ADDRESS_FLAG, FOREIGN_POSTAL_CODE, LOCATION_NAME, NOTE_TEXT, PERSON_SEQ_NUM, PRIMARY_FLAG, STATE, UPDATE_DATE, UPDATE_USER, ZIP_CODE, ZIP_CODE_EXT |
| Sequence | ADDRESS_SEQ |
| Related tables | COMPANY_ADDRESS, PERSON_ADDRESS |
| Business objects | `clsAddressInfo`, `clsContactAddressCollection`, `clsCustomerAddressCollection` |

### Operations referencing this table
- [Address info CRUD and linking](operations/address-info-crud-and-linking.md)

### Business rules referencing this table
- [BR-005: Address records require an ID and address type](business-rules.md#br-005-address-records-require-an-id-and-address-type)

### SQL referencing this table
- [SQL-001: Insert ADDRESS](sql/SQL-001.md)
- [SQL-002: Insert ADDRESS](sql/SQL-002.md)
- [SQL-026: Read ADDRESS](sql/SQL-026.md)
- [SQL-027: Read ADDRESS](sql/SQL-027.md)
- [SQL-030: Read ADDRESS](sql/SQL-030.md)
- [SQL-036: Read ADDRESS](sql/SQL-036.md)
- [SQL-064: Update ADDRESS](sql/SQL-064.md)
- [SQL-065: Update ADDRESS](sql/SQL-065.md)
- [SQL-075: Delete ADDRESS](sql/SQL-075.md)
- [SQL-076: Delete ADDRESS](sql/SQL-076.md)

---

## AGENCY

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source agency data used during external-to-local customer conversion. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### SQL referencing this table
- [SQL-046: Read AGENCY](sql/SQL-046.md)

---

## AGENT

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source agent data used during external-to-local customer and contact conversion. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### SQL referencing this table
- [SQL-048: Read AGENT](sql/SQL-048.md)
- [SQL-063: Read AGENT](sql/SQL-063.md)

---

## COMPANY

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores the root customer record created and maintained by this library. |
| Access pattern | BOF criteria SQL and direct helper SQL |
| CRUD operations | C/D/R/U |
| Key columns used | ACTIVE_FLAG, COMPANY_CODE, COMPANY_NAME, COMPANY_SEQ_NUM, COMPANY_SHORT_DESCR, CONTACT_NAME, EFF_DT, EXP_DT, EXTERNAL_REFERENCE_ID, INTERNAL_REFERENCE_ID, NOTE_TEXT, PERSON_FLAG, PRIMARY_FLAG, TAX_ID, UPDATE_DATE, UPDATE_USER |
| Sequence | COMPANY_SEQ |
| Related tables | COMPANY_NOTE, COMPANY_PERSON, CUSTOMER_AGENCY, CUSTOMER_AGENT, CUSTOMER_AUDITOR, CUSTOMER_GROUP, CUSTOMER_POLICY, CUSTOMER_PROVIDER, CUSTOMER_SOURCE |
| Business objects | `clsContact`, `clsCustomer`, `clsCustomerCollection` |

### Operations referencing this table
- [Customer/contact search](operations/customer-contact-search.md)
- [Customer CRUD with child persistence](operations/customer-crud-with-child-persistence.md)
- [Customer-contact relationship CRUD](operations/customer-contact-relationship-crud.md)

### Business rules referencing this table
- [BR-001: Search requires at least one populated criterion](business-rules.md#br-001-search-requires-at-least-one-populated-criterion)
- [BR-002: Search results are capped at 300](business-rules.md#br-002-search-results-are-capped-at-300)
- [BR-003: Contacts with customer relationships cannot be deleted](business-rules.md#br-003-contacts-with-customer-relationships-cannot-be-deleted)
- [BR-008: Generated agency, agent, and provider records can be forced inactive](business-rules.md#br-008-generated-agency-agent-and-provider-records-can-be-forced-inactive)

### SQL referencing this table
- [SQL-008: Insert COMPANY](sql/SQL-008.md)
- [SQL-028: Read COMPANY](sql/SQL-028.md)
- [SQL-035: Read COMPANY](sql/SQL-035.md)
- [SQL-037: Read COMPANY](sql/SQL-037.md)
- [SQL-068: Update COMPANY](sql/SQL-068.md)
- [SQL-082: Delete COMPANY](sql/SQL-082.md)

---

## COMPANY_ADDRESS

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates customer records with standalone address rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | ADDRESS_SEQ_NUM, COMPANY_SEQ_NUM |
| Sequence | N/A |
| Related tables | ADDRESS, COMPANY_ADDRESS_PHONE |
| Business objects | `clsCustomerAddressCollection` |

### Operations referencing this table
- [Address info CRUD and linking](operations/address-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-009: Insert COMPANY_ADDRESS](sql/SQL-009.md)
- [SQL-036: Read COMPANY_ADDRESS](sql/SQL-036.md)
- [SQL-083: Delete COMPANY_ADDRESS](sql/SQL-083.md)

---

## COMPANY_ADDRESS_PHONE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Extends customer-address retrieval with address-linked phone data.* |
| Access pattern | BOF criteria SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | COMPANY_ADDRESS |
| Business objects | `clsCustomerAddressCollection` |

### SQL referencing this table
- [SQL-036: Read COMPANY_ADDRESS_PHONE](sql/SQL-036.md)

---

## COMPANY_EMAIL

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates customer records with standalone email-address rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | COMPANY_SEQ_NUM, EMAIL_ADDRESS_SEQ_NUM |
| Sequence | N/A |
| Related tables | EMAIL_ADDRESS |
| Business objects | `clsCustomerEmailCollection` |

### Operations referencing this table
- [Email info CRUD and linking](operations/email-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-011: Insert COMPANY_EMAIL](sql/SQL-011.md)
- [SQL-039: Read COMPANY_EMAIL](sql/SQL-039.md)
- [SQL-085: Delete COMPANY_EMAIL](sql/SQL-085.md)

---

## COMPANY_NOTE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores long-form notes attached to customer records. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | COMPANY_SEQ_NUM, NOTE_TEXT |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `clsCustomerNote` |

### Operations referencing this table
- [Long-note persistence](operations/long-note-persistence.md)

### SQL referencing this table
- [SQL-012: Insert COMPANY_NOTE](sql/SQL-012.md)
- [SQL-040: Read COMPANY_NOTE](sql/SQL-040.md)
- [SQL-070: Update COMPANY_NOTE](sql/SQL-070.md)
- [SQL-086: Delete COMPANY_NOTE](sql/SQL-086.md)

---

## COMPANY_PERSON

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores customer-to-contact relationship rows. |
| Access pattern | BOF criteria SQL and direct helper SQL |
| CRUD operations | C/D/R/U |
| Key columns used | COMPANY_SEQ_NUM, PERSON_SEQ_NUM, RELATIONSHIP_CODE, TITLE |
| Sequence | N/A |
| Related tables | COMPANY, PERSON |
| Business objects | `clsContact`, `clsContactCollection`, `clsCustomerCollection`, `clsCustomerContact`, `clsCustomerContactCollection` |

### Operations referencing this table
- [Customer/contact search](operations/customer-contact-search.md)
- [Customer-contact relationship CRUD](operations/customer-contact-relationship-crud.md)

### Business rules referencing this table
- [BR-001: Search requires at least one populated criterion](business-rules.md#br-001-search-requires-at-least-one-populated-criterion)
- [BR-002: Search results are capped at 300](business-rules.md#br-002-search-results-are-capped-at-300)
- [BR-003: Contacts with customer relationships cannot be deleted](business-rules.md#br-003-contacts-with-customer-relationships-cannot-be-deleted)
- [BR-004: Customer-contact links require a relationship code](business-rules.md#br-004-customer-contact-links-require-a-relationship-code)

### SQL referencing this table
- [SQL-010: Insert COMPANY_PERSON](sql/SQL-010.md)
- [SQL-028: Read COMPANY_PERSON](sql/SQL-028.md)
- [SQL-031: Read COMPANY_PERSON](sql/SQL-031.md)
- [SQL-037: Read COMPANY_PERSON](sql/SQL-037.md)
- [SQL-038: Read COMPANY_PERSON](sql/SQL-038.md)
- [SQL-069: Update COMPANY_PERSON](sql/SQL-069.md)
- [SQL-084: Delete COMPANY_PERSON](sql/SQL-084.md)

---

## COMPANY_PHONE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates customer records with standalone phone rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | COMPANY_SEQ_NUM, PHONE_SEQ_NUM |
| Sequence | N/A |
| Related tables | PHONE |
| Business objects | `clsCustomerPhoneCollection` |

### Operations referencing this table
- [Phone info CRUD and linking](operations/phone-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-013: Insert COMPANY_PHONE](sql/SQL-013.md)
- [SQL-041: Read COMPANY_PHONE](sql/SQL-041.md)
- [SQL-087: Delete COMPANY_PHONE](sql/SQL-087.md)

---

## CUSTOMER_AGENCY

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between agency identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | AGENCY_SEQ_NUM, COMPANY_SEQ_NUM |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### Business rules referencing this table
- [BR-008: Generated agency, agent, and provider records can be forced inactive](business-rules.md#br-008-generated-agency-agent-and-provider-records-can-be-forced-inactive)

### SQL referencing this table
- [SQL-018: Insert CUSTOMER_AGENCY](sql/SQL-018.md)
- [SQL-047: Read CUSTOMER_AGENCY](sql/SQL-047.md)

---

## CUSTOMER_AGENT

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between agent identifiers and local customer/contact records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | AGENT_NUM, COMPANY_SEQ_NUM, PERSON_SEQ_NUM |
| Sequence | N/A |
| Related tables | COMPANY, PERSON |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### Business rules referencing this table
- [BR-008: Generated agency, agent, and provider records can be forced inactive](business-rules.md#br-008-generated-agency-agent-and-provider-records-can-be-forced-inactive)

### SQL referencing this table
- [SQL-019: Insert CUSTOMER_AGENT](sql/SQL-019.md)
- [SQL-049: Read CUSTOMER_AGENT](sql/SQL-049.md)

---

## CUSTOMER_AUDITOR

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between auditor identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | AUDITOR_ID, COMPANY_SEQ_NUM |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-020: Insert CUSTOMER_AUDITOR](sql/SQL-020.md)
- [SQL-050: Read CUSTOMER_AUDITOR](sql/SQL-050.md)

---

## CUSTOMER_GROUP

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between group-association identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | COMPANY_SEQ_NUM, GROUP_ASSOCIATION_CODE |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-021: Insert CUSTOMER_GROUP](sql/SQL-021.md)
- [SQL-053: Read CUSTOMER_GROUP](sql/SQL-053.md)

---

## CUSTOMER_POLICY

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between policy identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | COMPANY_SEQ_NUM, POLICY_NUM |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-023: Insert CUSTOMER_POLICY](sql/SQL-023.md)
- [SQL-057: Read CUSTOMER_POLICY](sql/SQL-057.md)

---

## CUSTOMER_PROVIDER

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between provider identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | COMPANY_SEQ_NUM, PROVIDER_SEQ_NUM |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### Business rules referencing this table
- [BR-008: Generated agency, agent, and provider records can be forced inactive](business-rules.md#br-008-generated-agency-agent-and-provider-records-can-be-forced-inactive)

### SQL referencing this table
- [SQL-024: Insert CUSTOMER_PROVIDER](sql/SQL-024.md)
- [SQL-059: Read CUSTOMER_PROVIDER](sql/SQL-059.md)

---

## CUSTOMER_SOURCE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores lookup mappings between source-system identifiers and local customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | C/R |
| Key columns used | COMPANY_CODE, COMPANY_SEQ_NUM, SOURCE_SYSTEM_ID |
| Sequence | N/A |
| Related tables | COMPANY |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-022: Insert CUSTOMER_SOURCE](sql/SQL-022.md)
- [SQL-025: Insert CUSTOMER_SOURCE](sql/SQL-025.md)
- [SQL-054: Read CUSTOMER_SOURCE](sql/SQL-054.md)
- [SQL-055: Read CUSTOMER_SOURCE](sql/SQL-055.md)
- [SQL-056: Read CUSTOMER_SOURCE](sql/SQL-056.md)
- [SQL-062: Read CUSTOMER_SOURCE](sql/SQL-062.md)

---

## EMAIL_ADDRESS

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores standalone email-address records that can be linked to either customers or contacts. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | ACTIVE_FLAG, EFF_DT, EMAIL_ADDRESS, EMAIL_ADDRESS_SEQ_NUM, EMAIL_CODE, EXP_DT, NOTE_TEXT, PRIMARY_FLAG, UPDATE_DATE, UPDATE_USER, VALIDATED_FLAG |
| Sequence | EMAIL_ADDRESS_SEQ |
| Related tables | COMPANY_EMAIL, PERSON_EMAIL |
| Business objects | `clsContactEmailCollection`, `clsCustomerEmailCollection`, `clsEmailAddressInfo` |

### Operations referencing this table
- [Email info CRUD and linking](operations/email-info-crud-and-linking.md)

### Business rules referencing this table
- [BR-006: Email validation severity and depth are configurable](business-rules.md#br-006-email-validation-severity-and-depth-are-configurable)

### SQL referencing this table
- [SQL-014: Insert EMAIL_ADDRESS](sql/SQL-014.md)
- [SQL-015: Insert EMAIL_ADDRESS](sql/SQL-015.md)
- [SQL-032: Read EMAIL_ADDRESS](sql/SQL-032.md)
- [SQL-039: Read EMAIL_ADDRESS](sql/SQL-039.md)
- [SQL-042: Read EMAIL_ADDRESS](sql/SQL-042.md)
- [SQL-043: Read EMAIL_ADDRESS](sql/SQL-043.md)
- [SQL-071: Update EMAIL_ADDRESS](sql/SQL-071.md)
- [SQL-072: Update EMAIL_ADDRESS](sql/SQL-072.md)
- [SQL-088: Delete EMAIL_ADDRESS](sql/SQL-088.md)
- [SQL-089: Delete EMAIL_ADDRESS](sql/SQL-089.md)

---

## GROUP_ASSOCIATION

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source group-association data used during external conversion flows. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-052: Read GROUP_ASSOCIATION](sql/SQL-052.md)

---

## PA_AUDITOR

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source auditor data used during external conversion flows. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-051: Read PA_AUDITOR](sql/SQL-051.md)

---

## PERSON

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores the root contact record created and maintained by this library. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | ACTIVE_FLAG, ALIAS_NAME, ANNIVERSARY_DATE, BIRTH_DATE, COMPANY_SEQ_NUM, CREATE_DATE, CREATE_USER, DRIVERS_LICENSE_NUM, DRIVERS_LICENSE_STATE, EFF_DT, ETHNIC_GROUP_CODE, EXP_DT, FIRST_NAME, GENDER_CODE, LAST_NAME, MAIDEN_NAME, MARRIED_NAME, MIDDLE_INITIAL, NAME, NAME_EXTENSION, NICK_NAME, NOTE_TEXT, PERSON_SEQ_NUM, PREFERRED_NAME, PRIMARY_FLAG, RELATIONSHIP_CODE, TAX_ID, TITLE, UPDATE_DATE, UPDATE_USER |
| Sequence | PERSON_SEQ |
| Related tables | COMPANY_PERSON, CUSTOMER_AGENT, PERSON_NOTE |
| Business objects | `clsContact`, `clsContactCollection`, `clsCustomerContactCollection` |

### Operations referencing this table
- [Customer/contact search](operations/customer-contact-search.md)
- [Contact CRUD with child persistence](operations/contact-crud-with-child-persistence.md)
- [Customer-contact relationship CRUD](operations/customer-contact-relationship-crud.md)

### Business rules referencing this table
- [BR-001: Search requires at least one populated criterion](business-rules.md#br-001-search-requires-at-least-one-populated-criterion)
- [BR-002: Search results are capped at 300](business-rules.md#br-002-search-results-are-capped-at-300)
- [BR-003: Contacts with customer relationships cannot be deleted](business-rules.md#br-003-contacts-with-customer-relationships-cannot-be-deleted)
- [BR-008: Generated agency, agent, and provider records can be forced inactive](business-rules.md#br-008-generated-agency-agent-and-provider-records-can-be-forced-inactive)

### SQL referencing this table
- [SQL-003: Insert PERSON](sql/SQL-003.md)
- [SQL-029: Read PERSON](sql/SQL-029.md)
- [SQL-031: Read PERSON](sql/SQL-031.md)
- [SQL-038: Read PERSON](sql/SQL-038.md)
- [SQL-066: Update PERSON](sql/SQL-066.md)
- [SQL-077: Delete PERSON](sql/SQL-077.md)

---

## PERSON_ADDRESS

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates contact records with standalone address rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | ADDRESS_SEQ_NUM, PERSON_SEQ_NUM |
| Sequence | N/A |
| Related tables | ADDRESS, PERSON_ADDRESS_PHONE |
| Business objects | `clsContactAddressCollection` |

### Operations referencing this table
- [Address info CRUD and linking](operations/address-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-004: Insert PERSON_ADDRESS](sql/SQL-004.md)
- [SQL-030: Read PERSON_ADDRESS](sql/SQL-030.md)
- [SQL-078: Delete PERSON_ADDRESS](sql/SQL-078.md)

---

## PERSON_ADDRESS_PHONE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Extends contact-address retrieval with address-linked phone data.* |
| Access pattern | BOF criteria SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | PERSON_ADDRESS |
| Business objects | `clsContactAddressCollection` |

### SQL referencing this table
- [SQL-030: Read PERSON_ADDRESS_PHONE](sql/SQL-030.md)

---

## PERSON_EMAIL

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates contact records with standalone email-address rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | EMAIL_ADDRESS_SEQ_NUM, PERSON_SEQ_NUM |
| Sequence | N/A |
| Related tables | EMAIL_ADDRESS |
| Business objects | `clsContactEmailCollection` |

### Operations referencing this table
- [Email info CRUD and linking](operations/email-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-005: Insert PERSON_EMAIL](sql/SQL-005.md)
- [SQL-032: Read PERSON_EMAIL](sql/SQL-032.md)
- [SQL-079: Delete PERSON_EMAIL](sql/SQL-079.md)

---

## PERSON_NOTE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores long-form notes attached to contact records. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | NOTE_TEXT, PERSON_SEQ_NUM |
| Sequence | N/A |
| Related tables | PERSON |
| Business objects | `clsContactNote` |

### Operations referencing this table
- [Long-note persistence](operations/long-note-persistence.md)

### SQL referencing this table
- [SQL-006: Insert PERSON_NOTE](sql/SQL-006.md)
- [SQL-033: Read PERSON_NOTE](sql/SQL-033.md)
- [SQL-067: Update PERSON_NOTE](sql/SQL-067.md)
- [SQL-080: Delete PERSON_NOTE](sql/SQL-080.md)

---

## PERSON_PHONE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Associates contact records with standalone phone rows. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R |
| Key columns used | PERSON_SEQ_NUM, PHONE_SEQ_NUM |
| Sequence | N/A |
| Related tables | PHONE |
| Business objects | `clsContactPhoneCollection` |

### Operations referencing this table
- [Phone info CRUD and linking](operations/phone-info-crud-and-linking.md)

### SQL referencing this table
- [SQL-007: Insert PERSON_PHONE](sql/SQL-007.md)
- [SQL-034: Read PERSON_PHONE](sql/SQL-034.md)
- [SQL-081: Delete PERSON_PHONE](sql/SQL-081.md)

---

## PHONE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Stores standalone phone records that can be linked to either customers or contacts. |
| Access pattern | BOF criteria SQL |
| CRUD operations | C/D/R/U |
| Key columns used | ACTIVE_FLAG, AREA_CODE, COMPANY_SEQ_NUM, COUNTRY_CODE, EFF_DT, EXP_DT, FOREIGN_FLAG, FOREIGN_NUMBER, LONG_DISTANCE_FLAG, NOTE_TEXT, PERSON_SEQ_NUM, PHONE_CODE, PHONE_EXTENSION, PHONE_NUM, PHONE_PREFIX, PHONE_SEQ_NUM, PRIMARY_FLAG, UPDATE_DATE, UPDATE_USER |
| Sequence | PHONE_SEQ |
| Related tables | COMPANY_PHONE, PERSON_PHONE |
| Business objects | `clsContactPhoneCollection`, `clsCustomerPhoneCollection`, `clsPhoneInfo` |

### Operations referencing this table
- [Phone info CRUD and linking](operations/phone-info-crud-and-linking.md)

### Business rules referencing this table
- [BR-007: Phone records require an ID and formatted value](business-rules.md#br-007-phone-records-require-an-id-and-formatted-value)

### SQL referencing this table
- [SQL-016: Insert PHONE](sql/SQL-016.md)
- [SQL-017: Insert PHONE](sql/SQL-017.md)
- [SQL-034: Read PHONE](sql/SQL-034.md)
- [SQL-041: Read PHONE](sql/SQL-041.md)
- [SQL-044: Read PHONE](sql/SQL-044.md)
- [SQL-045: Read PHONE](sql/SQL-045.md)
- [SQL-073: Update PHONE](sql/SQL-073.md)
- [SQL-074: Update PHONE](sql/SQL-074.md)
- [SQL-090: Delete PHONE](sql/SQL-090.md)
- [SQL-091: Delete PHONE](sql/SQL-091.md)

---

## POLICY

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source policy data used during external conversion flows. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-058: Read POLICY](sql/SQL-058.md)

---

## PROVIDER

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies source provider data used during external conversion flows. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | PROVIDER_TAX_ID |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### SQL referencing this table
- [SQL-060: Read PROVIDER](sql/SQL-060.md)

---

## PROVIDER_TAX_ID

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies provider tax-identifier data used while creating provider-based customer records. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | PROVIDER |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [Agency, agent, and provider customer resolution](operations/agency-agent-provider-resolution.md)

### SQL referencing this table
- [SQL-060: Read PROVIDER_TAX_ID](sql/SQL-060.md)

---

## RTW_LOAD_CODE

| Field | Value |
| --- | --- |
| Database | Oracle |
| Schema/Link | `[unqualified]**` |
| Purpose | Supplies return-to-work source data used during external conversion flows. |
| Access pattern | Direct helper SQL |
| CRUD operations | R |
| Key columns used | Not enumerated directly in the supplied findings** |
| Sequence | N/A |
| Related tables | None identified |
| Business objects | `mdlCustomerContact` |

### Operations referencing this table
- [External identifier resolution](operations/external-identifier-resolution.md)

### SQL referencing this table
- [SQL-061: Read RTW_LOAD_CODE](sql/SQL-061.md)

## Table relationship diagram

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

```mermaid
erDiagram
    COMPANY ||--o{ COMPANY_PERSON : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    PERSON ||--o{ COMPANY_PERSON : "PERSON_SEQ_NUM = COMPANY_PERSON_SEQ_NUM"
    ADDRESS ||--o{ COMPANY_ADDRESS : "ADDRESS_SEQ_NUM = COMPANY_ADDRESS_SEQ_NUM"
    ADDRESS ||--o{ PERSON_ADDRESS : "ADDRESS_SEQ_NUM = PERSON_ADDRESS_SEQ_NUM"
    EMAIL_ADDRESS ||--o{ COMPANY_EMAIL : "EMAIL_ADDRESS_SEQ_NUM = EMAIL_ADDRESS_SEQ_NUM"
    EMAIL_ADDRESS ||--o{ PERSON_EMAIL : "EMAIL_ADDRESS_SEQ_NUM = EMAIL_ADDRESS_SEQ_NUM"
    PHONE ||--o{ COMPANY_PHONE : "PHONE_SEQ_NUM = COMPANY_PHONE_SEQ_NUM"
    PHONE ||--o{ PERSON_PHONE : "PHONE_SEQ_NUM = PERSON_PHONE_SEQ_NUM"
    COMPANY_ADDRESS ||--|| COMPANY_ADDRESS_PHONE : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM AND ADDRESS_SEQ_NUM = ADDRESS_SEQ_NUM"
    PERSON_ADDRESS ||--|| PERSON_ADDRESS_PHONE : "PERSON_SEQ_NUM = PERSON_SEQ_NUM AND ADDRESS_SEQ_NUM = ADDRESS_SEQ_NUM"
    PROVIDER ||--o{ PROVIDER_TAX_ID : "PROVIDER_SEQ_NUM = PROVIDER_SEQ_NUM AND PRIMARY_TAX_ID = TAX_ID"
    COMPANY ||--o{ CUSTOMER_AUDITOR : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_SOURCE : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_GROUP : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_POLICY : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_AGENCY : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_AGENT : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    PERSON ||--o{ CUSTOMER_AGENT : "PERSON_SEQ_NUM = PERSON_SEQ_NUM"
    COMPANY ||--o{ CUSTOMER_PROVIDER : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    COMPANY ||--|| COMPANY_NOTE : "COMPANY_SEQ_NUM = COMPANY_SEQ_NUM"
    PERSON ||--|| PERSON_NOTE : "PERSON_SEQ_NUM = PERSON_SEQ_NUM"
```

## 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)
- [Configuration](configuration.md)

> **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.

## Sources
- `Business\SAIF.Business.CustomerContact\Contact\clsContactAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\InfoItems\clsAddressInfo.vb`
- `Business\SAIF.Business.CustomerContact\clsAddressInfo.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContact.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomer.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerEmailCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerNote.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContact.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomer.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerPhoneCollection.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactEmailCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerEmailCollection.vb`
- `Business\SAIF.Business.CustomerContact\InfoItems\clsEmailAddressInfo.vb`
- `Business\SAIF.Business.CustomerContact\clsEmailAddressInfo.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContact.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactAddressCollection.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactEmailCollection.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactNote.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactPhoneCollection.vb`
- `Business\SAIF.Business.CustomerContact\Contact\clsContactPhoneCollection.vb`
- `Business\SAIF.Business.CustomerContact\Customer\clsCustomerPhoneCollection.vb`
- `Business\SAIF.Business.CustomerContact\InfoItems\clsPhoneInfo.vb`
- `Business\SAIF.Business.CustomerContact\clsPhoneInfo.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
- `Business\SAIF.Business.CustomerContact\mdlCustomerContact.vb`
