Skip to content

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

BR-025: Non-agency-viewable output documents release immediately

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