SAIF.Business.Policy.Correspondence business rules
This page captures the business rules enforced by the local source code and the documented Oracle procedure used by this library.
BR-001: Only endorsement-coded correspondence is returned
Field
Value
Statement
An endorsement retrieval path only returns ENDORSEMENT rows whose ENDORSE_CODE row has CORRESPOND_TYPE_CODE = ''E''.
Trigger
Single-item or collection endorsement retrieval.
Enforcement
clsEndorsement.Criteria.RetrieveSQL; clsEndorsementCollection.Criteria.RetrieveSQL.
Outcome
Non-endorsement correspondence is excluded from endorsement APIs.
Confidence
Verified
Tables
ENDORSEMENT , ENDORSE_CODE
SQL
SQL-013 , SQL-014 , SQL-015
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb; Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-002: Policy-period filters bind only for period-scoped retrieval
Field
Value
Statement
Period effective and expiration date parameters are bound only when the collection criteria uses RetrievalTypes.ByPolicyPeriod.
Trigger
Collection retrieval by policy or by policy period.
Enforcement
clsCorrespondenceCollection.BeforeRetrieve; clsEndorsementCollection.BeforeRetrieve.
Outcome
Policy-wide retrieval binds only :PolicyNumber; period-scoped retrieval adds period parameters.
Confidence
Verified
Tables
POLICY_PERIOD , ENDORSEMENT
SQL
SQL-015
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCollection.vb; Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-003: Policy-period membership depends on source-system rules
Field
Value
Statement
For non-Guidewire periods the collection uses overlap logic; for source_system_code = ''GW'' it requires an exact policy_period_eff_date match.
Trigger
Endorsement collection retrieval in ByPolicyPeriod mode.
Enforcement
clsEndorsementCollection.Criteria.RetrieveSQL.
Outcome
Different source systems produce different period-membership filters.
Confidence
Verified
Tables
POLICY_PERIOD , ENDORSEMENT
SQL
SQL-015
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-004: Endorsements require a policy-period effective date
Field
Value
Statement
An endorsement cannot be valid without PolicyPeriodEffectiveDate.
Trigger
Validation of clsEndorsement.
Enforcement
clsEndorsement.AddBusinessRules using CommonBusinessRules.DateRequired.
Outcome
Validation adds the message Error: Policy Period Effective Date is required.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb
BR-005: Agency-delivered output documents add an agency-delivery flag
Field
Value
Statement
The agency-delivered insert path binds in_agency_delivery_flag = ''Y''; the standard path does not.
Trigger
Output-document insert request construction.
Enforcement
clsOutputDocumentInserter.InsertAgencyDeliveredOutputDocument and private InsertOutputDocument.
Outcome
The stored procedure can distinguish agency-delivered documents from the standard path.
Confidence
Verified
Tables
OUTPUT_DOCUMENT , POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-006: New correspondence uses the Endorsement_Seq sequence
Field
Value
Statement
Every newly created correspondence or endorsement receives its key from GetNextSeqNum("Endorsement_Seq").
Trigger
Business-object create path.
Enforcement
clsCorrespondence.Create.
Outcome
The new object is stamped with a sequence number before the caller receives it.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-001
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-007: Create stamps audit fields from the data portal
Field
Value
Statement
Create user, create date, and correspondence date come from IDataPortalInfo, not the client clock.
Trigger
Business-object create path.
Enforcement
clsCorrespondence.Create.
Outcome
Audit fields are server-sourced and consistent with the active portal context.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-001
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-008: Correspondence retrieval switches between two key shapes
Field
Value
Statement
Retrieval uses sequence number when one is present; otherwise it uses policy number, policy-period effective date, and correspondence code.
Trigger
GetCorrespondence or GetInformationPage criteria evaluation.
Enforcement
clsCorrespondence.BeforeRetrieve; clsCorrespondence.Criteria.RetrieveSQL.
Outcome
The same API supports direct key lookup and information-page lookup.
Confidence
Verified
Tables
ENDORSEMENT , OUTPUT_LOG
SQL
SQL-005 , SQL-006
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-009: Information-page retrieval always uses code P401
Field
Value
Statement
The information-page factory always retrieves correspondence code P401.
Trigger
clsCorrespondence.GetInformationPage.
Enforcement
INFORMATIONPAGE constant and GetInformationPage factory.
Outcome
Information pages use a fixed correspondence-code contract.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-006
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-010: Transaction-pending endorsement loads reuse a pre-fetched code collection
Field
Value
Statement
When a portal transaction is pending, collection loading passes a shared correspondence-code collection into each child object.
Trigger
Endorsement collection hydration inside an open transaction.
Enforcement
clsEndorsementCollection.AfterRetrieve.
Outcome
Nested code lookups are avoided while the transaction is still open.
Confidence
Verified
Tables
ENDORSE_CODE
SQL
SQL-009 , SQL-014 , SQL-015
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCode.vb
BR-011: Collection save applies edits before framework persistence
Field
Value
Statement
Collection Save() overrides call ApplyEdit() before delegating to the framework save pipeline.
Trigger
Save of correspondence, detail, or endorsement collections.
Enforcement
clsCorrespondenceCollection.Save; clsCorrespondenceDetailCollection.Save; clsEndorsementCollection.Save.
Outcome
The active edit scope is committed before child persistence starts.
Confidence
Verified
Tables
ENDORSEMENT , POLICY_CORRESPOND_DATA
SQL
SQL-002 , SQL-012 , SQL-016
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCollection.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetailCollection.vb; Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-012: Insert and update must affect exactly one row
Field
Value
Statement
A correspondence insert or update is treated as failed unless the request reports RowsAffected = 1.
Trigger
Post-insert and post-update processing.
Enforcement
clsCorrespondence.AfterInsert; clsCorrespondence.AfterUpdate.
Outcome
The object records InsertError or DB-contention errors instead of marking itself old.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-002 , SQL-016
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-013: Updates enforce optimistic concurrency by update date
Field
Value
Statement
BeforeUpdate binds the pre-change UPDATE_DATE as :LastUpdateDate and restamps UpdateUser and UpdateDate from the portal.
Trigger
Correspondence update.
Enforcement
clsCorrespondence.BeforeUpdate.
Outcome
Concurrent updates are detected through the WHERE UPDATE_DATE = :LastUpdateDate predicate.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-016
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-014: Correspondence does not expose create-SQL or delete-SQL criteria
Field
Value
Statement
The criteria object throws InvalidSQLProperty for CreateSQL and DeleteSQL.
Trigger
Any consumer that tries to use unsupported criteria properties.
Enforcement
clsCorrespondence.Criteria.CreateSQL; clsCorrespondence.Criteria.DeleteSQL; related collection/detail criteria.
Outcome
The library only supports framework create via GetNextSeqNum and does not support row deletion.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-001
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCollection.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetail.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetailCollection.vb
BR-015: Imaging reconciliation skips empty image lists
Field
Value
Statement
The Imaging API is not called when no endorsement in the collection currently carries an image sequence number.
Trigger
ClearImageSequenceNumbersForDeletedImages.
Enforcement
clsEndorsementCollection.ClearImageSequenceNumbersForDeletedImages.
Outcome
The method returns without creating an API request.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-016: Missing images reset local image sequence numbers to zero
Field
Value
Statement
If the Imaging API response does not include a locally stored image ID, the endorsement image sequence number is reset to 0.
Trigger
Imaging reconciliation after the API returns the surviving images.
Enforcement
clsEndorsementCollection.ClearImageSequenceNumbersForDeletedImages.
Outcome
Stale image references are cleared from in-memory correspondence objects.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
BR-017: Correspondence details are read-only through this library
Field
Value
Statement
Live InsertSQL, UpdateSQL, and DeleteSQL paths for POLICY_CORRESPOND_DATA are disabled.
Trigger
Any attempt to persist detail rows through the criteria object.
Enforcement
clsCorrespondenceDetail.Criteria throws InvalidSQLProperty for mutating SQL properties.
Outcome
The library exposes detail rows for read/display only.
Confidence
Verified
Tables
POLICY_CORRESPOND_DATA , CORRESPOND_DATA_ELEMENT
SQL
SQL-011 , SQL-012
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetail.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetailCollection.vb
BR-018: Correspondence requires non-zero primary identifiers
Field
Value
Statement
A correspondence item is invalid when the correspondence sequence number or policy number is zero.
Trigger
Validation of clsCorrespondence.
Enforcement
clsCorrespondence.AddBusinessRules using CommonBusinessRules.NonZeroDecimalRequired.
Outcome
Validation reports either Error: Correspondence does not exist. or Error: Policy Number is required.
Confidence
Verified
Tables
ENDORSEMENT
SQL
SQL-002 , SQL-016
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-019: Correspondence codes must exist in ENDORSE_CODE
Field
Value
Statement
A correspondence is only valid when its code resolves in the lazily loaded ENDORSE_CODE collection.
Trigger
Validation of CorrespondenceCode.
Enforcement
clsCorrespondence.ValidCorrespondenceCode.
Outcome
Validation reports Error: Code is not valid. when the code lookup returns nothing.
Confidence
Verified
Tables
ENDORSE_CODE
SQL
SQL-008 , SQL-009
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb; Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCode.vb
BR-020: Exemption endorsements use a fixed code set
Field
Value
Statement
Only codes 380, 381, 382, 383, 384, and 385 classify as exemption endorsements.
Trigger
Exemption classification check.
Enforcement
clsEndorsement.IsExemptionEndorsement.
Outcome
Callers can branch on exemption-specific endorsement behavior.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb
BR-021: Personal-election endorsements use a fixed code set
Field
Value
Statement
Personal-election classification is limited to the 314*, 315, and 31501 code set defined in clsEndorsement.
Trigger
Personal-election classification check.
Enforcement
clsEndorsement.IsPersonalElectionEndorsement.
Outcome
Callers can identify the personal-election endorsement family through a shared helper.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb
BR-022: Longshore endorsements use a fixed code set
Field
Value
Statement
Only codes 420 and 423 classify as longshore endorsements.
Trigger
Longshore classification check.
Enforcement
clsEndorsement.IsLongshoreEndorsement.
Outcome
Callers can branch on longshore-specific behavior.
Confidence
Verified
Source
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb
BR-023: Correspondence descriptions resolve through the code collection cache
Field
Value
Statement
The correspondence description property reads ENDORSE_CODE metadata through clsCodeCollection.GetCodeCollection(...).
Trigger
First access to CorrespondenceCodes or CorrespondenceDescription.
Enforcement
clsCorrespondence.CorrespondenceCodes; clsCorrespondence.CorrespondenceDescription.
Outcome
Descriptions and validation share the same cached code-table source.
Confidence
Verified
Tables
ENDORSE_CODE
SQL
SQL-008 , SQL-009
Source
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
BR-024: Explicit release dates override the computed document date
Field
Value
Statement
The output-document package stores the caller-supplied release date as the document create date when one is provided.
Trigger
Stored-procedure execution with in_release_date populated.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
OUTPUT_DOCUMENT.DOCUMENT_CREATE_DATE uses the explicit date instead of get_document_date().
Confidence
Verified
Tables
OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
Field
Value
Statement
A document type with AGENCY_VIEW_FLAG = ''N'' is stored in released status.
Trigger
Stored-procedure document-type lookup.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
POLICY_OUTPUT_DOCUMENT.DOCUMENT_STATUS_CODE is RELE.
Confidence
Verified
Tables
OUTPUT_DOCUMENT_TYPE_CODE , POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-026: Held output documents require both agency visibility and hold flag
Field
Value
Statement
Agency-viewable documents requested with in_hold_flag = ''Y'' are stored in held status.
Trigger
Stored-procedure status derivation.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
POLICY_OUTPUT_DOCUMENT.DOCUMENT_STATUS_CODE is HELD.
Confidence
Verified
Tables
POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-027: Agency-viewable non-held documents start pending
Field
Value
Statement
Agency-viewable documents without the hold flag are stored in pending status.
Trigger
Stored-procedure status derivation.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
POLICY_OUTPUT_DOCUMENT.DOCUMENT_STATUS_CODE is PEND.
Confidence
Verified
Tables
POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-028: Zero agency and agent numbers are normalized to NULL
Field
Value
Statement
The output-document package stores zero agency or agent numbers as NULL rather than persisting zero.
Trigger
Stored-procedure policy-link insert.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
POLICY_OUTPUT_DOCUMENT.AGENCY_SEQ_NUM and AGENT_NUM are nullable output values.
Confidence
Verified
Tables
POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-029: Release dates are set only for released policy-output rows
Field
Value
Statement
The stored procedure populates RELEASE_DATE only when the derived document status is RELE.
Trigger
Stored-procedure policy-link insert.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
Held and pending rows keep a null release date.
Confidence
Verified
Tables
POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-030: The standard output-document overload defaults to non-agency delivery
Field
Value
Statement
The 11-argument insert path always delegates with in_agency_delivery_flag = ''N'', in_endorse_seq_num = NULL, and in_task_user = NULL.
Trigger
Use of InsertOutputDocument.
Enforcement
clsOutputDocumentInserter.InsertOutputDocument and the package overload it targets.
Outcome
Standard callers create non-agency-delivered policy output documents.
Confidence
Verified
Tables
OUTPUT_DOCUMENT , POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-031: The agency-delivered overload passes the delivery flag through unchanged
Field
Value
Statement
The 12-argument insert path preserves the agency-delivery flag while still defaulting endorsement and task-user values to null.
Trigger
Use of InsertAgencyDeliveredOutputDocument.
Enforcement
clsOutputDocumentInserter.InsertAgencyDeliveredOutputDocument and the package overload it targets.
Outcome
Agency-delivered policy output documents carry an explicit delivery marker.
Confidence
Verified
Tables
OUTPUT_DOCUMENT , POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
BR-032: The output-document procedure raises a standard SAIF error on exception
Field
Value
Statement
The package traps WHEN OTHERS and re-raises a standard SAIF error with the call arguments and SQLERRM.
Trigger
Any unhandled database exception during output-document insertion.
Enforcement
pk73343_output_document.insert_policy_output_document.
Outcome
The procedure does not fail silently; it raises a standardized error payload.
Confidence
Verified
Tables
OUTPUT_DOCUMENT , POLICY_OUTPUT_DOCUMENT
SQL
SQL-004
Stored procedure
pk73343_output_document
Source
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb
Inherited business rules
Rules in this section originate from documented BOF framework classes and are enforced through inherited behavior.
From clsBusinessBase (SAIF.Framework.Core)
INH-001: BOF rules manager executes registered validation handlers
Field
Value
Statement
Every clsBusinessBase-derived object owns a clsRulesManager that executes registered rule handlers and records broken rules.†
Trigger
Property setters or save paths invoke framework rule evaluation.
Enforcement
Inherited clsBusinessBase.Rules / Rules.CheckRules(...) behavior.
Outcome
Validation state is surfaced consistently across derived business objects.
Confidence
Verified
Origin
SAIF.Framework.Core — clsBusinessBase
Source
Retrieved from dependency documentation via Legends CLI
From clsBusinessCollectionBase (SAIF.Framework.Core)
INH-002: BOF collections surface broken-rule state through IDataErrorInfo
Field
Value
Statement
clsBusinessCollectionBase exposes collection-level broken-rule state through IDataErrorInfo.†
Trigger
Child validation failures or aggregate collection errors.
Enforcement
Inherited Error and indexer members on the framework collection base class.
Outcome
UI and calling code can read collection error state without iterating every child item manually.
Confidence
Verified
Origin
SAIF.Framework.Core — clsBusinessCollectionBase
Source
Retrieved from dependency documentation via Legends CLI
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.
Statements marked with † are derived from dependency library documentation via the Legends CLI.
Sources
Business\SAIF.Business.Policy.Correspondence\clsCorrespondence.vb
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCode.vb
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceCollection.vb
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetail.vb
Business\SAIF.Business.Policy.Correspondence\clsCorrespondenceDetailCollection.vb
Business\SAIF.Business.Policy.Correspondence\clsEndorsement.vb
Business\SAIF.Business.Policy.Correspondence\clsEndorsementCollection.vb
Business\SAIF.Business.Policy.Correspondence\clsOutputDocumentInserter.vb