---
title: clsGroupAssociation
summary: API reference for clsGroupAssociation.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-31
library: SAIF.Business.Policy.Group
reference_type: package
---

# clsGroupAssociation

Owns the group master record, typed group classification, mailing metadata, and lazy chapter access for one association.

## Purpose
- Owns the group master record, typed group classification, mailing metadata, and lazy chapter access for one association.

## Context
- Namespace: `SAIF.Business.Policy.Group`
- Assembly/package: `SAIF.Business.Policy.Group`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| ConvertGroupType | `Public Shared Function ConvertGroupType(ByVal inGroupType As GroupTypes) As String` | Translates between the stored group-type code and the typed `GroupTypes` enum. |
| ConvertGroupType | `Public Shared Function ConvertGroupType(ByVal inGroupType As String) As GroupTypes` | Translates between the stored group-type code and the typed `GroupTypes` enum. |
| PreInspectionClassCodes | `Public ReadOnly Property PreInspectionClassCodes As IEnumerable(Of String)` | Returns the class codes this group exposes for pre-inspection handling.* |
| Code | `Public Property Code() As String` | Business code that identifies the row within its owning table.* |
| Name | `Public Property Name() As String` | Display name for the group.* |
| EffectiveDate | `Public Property EffectiveDate() As Date` | Effective date that starts the row's validity period. |
| GroupTypeCode | `Public Property GroupTypeCode() As String` | Persisted code that classifies the group type. |
| GroupType | `Public Property GroupType() As GroupTypes` | Typed interpretation of the stored group type code. |
| GroupPlanCode | `Public Property GroupPlanCode() As String` | Plan code associated with the group.* |
| GroupPlan | `Public Property GroupPlan() As Enums.SalesPlans` | Typed sales-plan view of the stored group plan code.* |
| SalesPlan | `Public ReadOnly Property SalesPlan() As SAIF.Business.Policy.Enums.SalesPlans` | Returns the group's stored sales-plan code as the shared `SalesPlans` enum.* |
| GroupRenewalDate | `Public Property GroupRenewalDate() As Date` | Renewal date associated with the group.* |
| PMSGroupNumber | `Public Property PMSGroupNumber() As Decimal` | External PMS group identifier.* |
| CreateDate | `Public Property CreateDate() As Date` | Audit timestamp recorded when the row is created. |
| CreateUser | `Public Property CreateUser() As String` | Audit user recorded when the row is created. |
| UpdateDate | `Public Property UpdateDate() As Date` | Audit timestamp recorded when the row is updated. |
| UpdateUser | `Public Property UpdateUser() As String` | Audit user recorded when the row is updated. |
| GroupEnrollForm | `Public Property GroupEnrollForm() As String` | Enrollment form code used for the group.* |
| CodeAcronym | `Public Property CodeAcronym() As String` | Short code acronym stored with the group.* |
| FixedPlanDateFlag | `Public Property FixedPlanDateFlag() As String` | Stored flag indicating fixed-plan-date behavior.* |
| PrintATPlanFlag | `Public Property PrintATPlanFlag() As String` | Stored flag controlling AT-plan printing.* |
| AutoRenewalFlag | `Public Property AutoRenewalFlag() As String` | Stored flag indicating automatic renewal behavior.* |
| GroupRepresentative | `Public Property GroupRepresentative() As String` | Representative assigned to the group.* |
| Address1 | `Public Property Address1() As String` | First mailing-address line for the group.* |
| Address2 | `Public Property Address2() As String` | Second mailing-address line for the group.* |
| City | `Public Property City() As String` | Mailing city for the group.* |
| State | `Public Property State() As String` | Mailing state for the group.* |
| Zip | `Public Property Zip() As String` | Mailing ZIP code for the group.* |
| Zip4 | `Public Property Zip4() As String` | ZIP+4 suffix for the mailing address.* |
| USPSBarcode | `Public Property USPSBarcode() As String` | Postal barcode value generated for the mailing address.* |
| County | `Public Property County() As String` | County tied to the group address.* |
| Phone | `Public Property Phone() As String` | Primary phone number for the group.* |
| Fax | `Public Property Fax() As String` | Primary fax number for the group.* |
| ExpirationDate | `Public Property ExpirationDate() As Date` | Optional date that ends the row's validity period.* |
| AddEndorseCode | `Public Property AddEndorseCode() As String` | Endorsement code used when a policy joins the group.* |
| PMSGroupSubCode | `Public Property PMSGroupSubCode() As String` | External PMS subgroup identifier.* |
| RateChangeEndorseCode | `Public Property RateChangeEndorseCode() As String` | Endorsement code used when a policy's rating changes within the group.* |
| MandatoryFinancialSystem | `Public Property MandatoryFinancialSystem() As String` | Stored flag or code for financial-system requirements.* |
| MandatoryRenewalTrack | `Public Property MandatoryRenewalTrack() As String` | Stored flag or code for renewal-tracking requirements.* |
| PendingEndorseCode | `Public Property PendingEndorseCode() As String` | Endorsement code used for pending membership changes.* |
| CancelEndorseCode | `Public Property CancelEndorseCode() As String` | Endorsement code used when membership is cancelled.* |
| ParentGroup | `Public Property ParentGroup() As String` | Related parent-group reference resolved from the stored data.* |
| Discount | `Public ReadOnly Property Discount(ByVal inAsOfDate As Date) As clsGroupAssociationDiscount` | Lazily loads the group's effective-dated discount row for the supplied as-of date.* |
| HasDiscount | `Public ReadOnly Property HasDiscount(ByVal inAsOfDate As Date) As Boolean` | Reports whether an effective-dated discount row exists for the supplied as-of date.* |
| IsExpired | `Public ReadOnly Property IsExpired(ByVal inAsOfDate As Date) As Boolean` | Evaluates whether the group is expired as of the supplied date. |
| Chapters | `Public ReadOnly Property Chapters() As clsChapterCollection` | Lazily loads the group's chapter collection and seeds a placeholder chapter when no rows exist ([BR-005](../../../../../business-rules.md#br-005-group-exposes-a-placeholder-chapter-when-none-exist)). |
| IsValid | `Public Overrides ReadOnly Property IsValid() As Boolean` | Reports whether the group association currently satisfies BOF validation rules.* |
| IsDirty | `Public Overrides ReadOnly Property IsDirty() As Boolean` | Reports whether the group association has unsaved edits pending in BOF state tracking.* |
| SetAddress1Null | `Public Sub SetAddress1Null()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetAddress2Null | `Public Sub SetAddress2Null()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetCityNull | `Public Sub SetCityNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetStateNull | `Public Sub SetStateNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetZipNull | `Public Sub SetZipNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetZip4Null | `Public Sub SetZip4Null()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetUSPSBarcodeNull | `Public Sub SetUSPSBarcodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetCountyNull | `Public Sub SetCountyNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetPhoneNull | `Public Sub SetPhoneNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetFaxNull | `Public Sub SetFaxNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetAssociationExpirationDateNull | `Public Sub SetAssociationExpirationDateNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetAddEndorseCodeNull | `Public Sub SetAddEndorseCodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetPMSGroupSubCodeNull | `Public Sub SetPMSGroupSubCodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetRateChangeEndorseCodeNull | `Public Sub SetRateChangeEndorseCodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetMandatoryFinancialSystemNull | `Public Sub SetMandatoryFinancialSystemNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetMandatoryRenewalTrackNull | `Public Sub SetMandatoryRenewalTrackNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetPendingEndorseCodeNull | `Public Sub SetPendingEndorseCodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetCancelEndorseCodeNull | `Public Sub SetCancelEndorseCodeNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| SetParentGroupNull | `Public Sub SetParentGroupNull()` | Clears the corresponding optional field so the persistence layer can write a database null.* |
| IsAddress1Null | `Public Function IsAddress1Null() As Boolean` | Reports whether the first mailing-address line is currently unset or database-null.* |
| IsAddress2Null | `Public Function IsAddress2Null() As Boolean` | Reports whether the second mailing-address line is currently unset or database-null.* |
| IsCityNull | `Public Function IsCityNull() As Boolean` | Reports whether the mailing city is currently unset or database-null.* |
| IsStateNull | `Public Function IsStateNull() As Boolean` | Reports whether the mailing state is currently unset or database-null.* |
| IsZipNull | `Public Function IsZipNull() As Boolean` | Reports whether the mailing ZIP code is currently unset or database-null.* |
| IsZip4Null | `Public Function IsZip4Null() As Boolean` | Reports whether the ZIP+4 suffix is currently unset or database-null.* |
| IsUSPSBarcodeNull | `Public Function IsUSPSBarcodeNull() As Boolean` | Reports whether the USPS barcode is currently unset or database-null.* |
| IsCountyNull | `Public Function IsCountyNull() As Boolean` | Reports whether the mailing county is currently unset or database-null.* |
| IsPhoneNull | `Public Function IsPhoneNull() As Boolean` | Reports whether the group phone number is currently unset or database-null.* |
| IsFaxNull | `Public Function IsFaxNull() As Boolean` | Reports whether the group fax number is currently unset or database-null.* |
| IsAssociationExpirationDateNull | `Public Function IsAssociationExpirationDateNull() As Boolean` | Reports whether the group expiration date is currently unset or database-null.* |
| IsAddEndorseCodeNull | `Public Function IsAddEndorseCodeNull() As Boolean` | Reports whether the add-endorsement code is currently unset or database-null.* |
| IsPMSGroupSubCodeNull | `Public Function IsPMSGroupSubCodeNull() As Boolean` | Reports whether the PMS subgroup code is currently unset or database-null.* |
| IsRateChangeEndorseCodeNull | `Public Function IsRateChangeEndorseCodeNull() As Boolean` | Reports whether the rate-change endorsement code is currently unset or database-null.* |
| IsMandatoryFinancialSystemNull | `Public Function IsMandatoryFinancialSystemNull() As Boolean` | Reports whether the mandatory financial-system flag is currently unset or database-null.* |
| IsMandatoryRenewalTrackNull | `Public Function IsMandatoryRenewalTrackNull() As Boolean` | Reports whether the mandatory renewal-track flag is currently unset or database-null.* |
| IsPendingEndorseCodeNull | `Public Function IsPendingEndorseCodeNull() As Boolean` | Reports whether the pending endorsement code is currently unset or database-null.* |
| IsCancelEndorseCodeNull | `Public Function IsCancelEndorseCodeNull() As Boolean` | Reports whether the cancel endorsement code is currently unset or database-null.* |
| IsParentGroupNull | `Public Function IsParentGroupNull() As Boolean` | Reports whether the parent-group reference is currently unset or database-null.* |
| Equals | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Compares another value with this group association for business-object equality.* |
| Equals | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Compares another value with this group association for business-object equality.* |
| Equals | `Public Overloads Function Equals(ByVal inObject As clsGroupAssociation) As Boolean` | Compares another value with this group association for business-object equality.* |
| GetHashCode | `Public Overrides Function GetHashCode() As Integer` | Returns a hash code aligned with the group association's business identity for collection lookups.* |
| ToString | `Public Overrides Function ToString() As String` | Returns a textual representation of the group association for diagnostics or display.* |
| GetGroupAssociation | `Public Shared Function GetGroupAssociation(ByVal inDataportal As IDataPortalInfo, ByVal inGroupCode As String) As clsGroupAssociation` | Loads the master group-association record for the supplied group code. |
| ValidGroupAssociation | `Public Function ValidGroupAssociation(ByVal target As Object, ByVal e As clsRuleArgs) As Boolean` | Enforces the rule that a group association must carry a non-empty group code ([BR-001](../../../../../business-rules.md#br-001-group-association-code-is-required)). |
| GroupCode | `Public Property GroupCode() As String` | Alias property used by BOF retrieval and validation flows to carry the group's key value.* |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo)` | Creates a new BOF-backed group association instance, optionally seeded with its key values for create or retrieve flows.* |
| New | `Public Sub New(ByVal inDataPortalInfo As IDataPortalInfo, ByVal inGroupCode As String)` | Creates a new BOF-backed group association instance, optionally seeded with its key values for create or retrieve flows.* |

## Inherited public members

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| Rules | `Property Rules As clsRulesManager` | Inherited rules manager that executes registered BOF validation handlers.† | `SAIF.Framework.Core — clsBusinessBase` |
| BeginEdit | `Sub BeginEdit()` | Starts the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| CancelEdit | `Sub CancelEdit()` | Rolls back the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| ApplyEdit | `Sub ApplyEdit()` | Commits the inherited BOF edit session for the object graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| SetPreviousLink | `Sub SetPreviousLink(item As ILinkItem)` | Maintains inherited linked-list navigation between BOF objects.† | `SAIF.Framework.Core — clsBusinessBase` |
| SetNextLink | `Sub SetNextLink(item As ILinkItem)` | Maintains inherited linked-list navigation between BOF objects.† | `SAIF.Framework.Core — clsBusinessBase` |
| InsertLinkAfter | `Sub InsertLinkAfter(item As ILinkItem)` | Inserts an inherited link after the current BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| InsertLinkBefore | `Sub InsertLinkBefore(item As ILinkItem)` | Inserts an inherited link before the current BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| RemoveLinks | `Sub RemoveLinks()` | Clears inherited object links in the BOF graph.† | `SAIF.Framework.Core — clsBusinessBase` |
| Error | `ReadOnly Property Error As String` | Surfaces inherited aggregate broken-rule text through `IDataErrorInfo`.† | `SAIF.Framework.Core — clsBusinessBase` |
| Item | `ReadOnly Property Item(columnName As String) As String` | Surfaces inherited per-member broken-rule text through `IDataErrorInfo`.† | `SAIF.Framework.Core — clsBusinessBase` |
| DumpState | `Public Sub DumpState()` | Emits inherited diagnostic state for the BOF object.† | `SAIF.Framework.Core — clsBusinessBase` |
| AllowCache | `Public Property AllowCache() As Boolean` | Controls whether the inherited BOF object may be cached.† | `SAIF.Framework.Core — clsBusinessBase` |

## Behavioral notes
- Lazily loads `Chapters` and seeds a placeholder chapter when no rows exist ([BR-005](../../../../../business-rules.md#br-005-group-exposes-a-placeholder-chapter-when-none-exist)).
- Update and delete SQL for this type are truncated at a bare `Where`, so persistence is incomplete as written.

## Constraints and usage notes
- Most create, retrieve, and save flows rely on BOF criteria and data-portal behavior inherited from the framework base layer.†

> **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 `†` were retrieved from dependency library documentation via the Legends CLI RAG service.

## Sources
- `Business\\SAIF.Business.Policy.Group\\clsGroupAssociation.vb`

