Invariant validation checks

The validateImpl method in the gw.policy.PolicyPeriodValidation class also calls the following code:

new InvariantValidation(Context, Period).validate()

This code initiates what Guidewire calls invariant checks. PolicyCenter uses these checks to determine whether a policy has been modified in ways that violate implied constraints to the data model.

The method call creates a new InvariantValidation object, whose validate method initiates the actual invariant tests and checks.

In the base configuration, these tests perform the following entity checks:

Entity

PolicyCenter checks that...

Coverage

  • Required coverage terms are not null.
  • Direct coverage terms are within minimum and maximum constraints.

BusinessAutoLine

If the Business Auto Line exists, then the correct policy line pattern is applied.

CoverageSymbolGroup

  • The coverage symbol group is compatible with policy line pattern.
  • The coverage symbol is compatible with coverage symbol group pattern.
  • The coverage symbol pattern does not have multiple instances. (Each coverage symbol must appear only once).

Modifier

The rate modifier value is within the allowed minimum and maximum values.

PolicyLine

  • A policy line subtype exists for a policy line.
  • A policy line pattern exists for a policy line.
  • The policy line type matches the subtype of the policy pattern.

Product

The referenced policy line pattern is compatible with this product.

RateFactor

  • The rate factor pattern is compatible with the schedule credit pattern.
  • The rate factor is within the allowable minimum and maximum values

Constraint Errors

If a check indicates that the user-defined product model violates one or more constraints, PolicyCenter generates an appropriate error message.

PolicyCenter stores the invariant errors in display keys. In Studio, in Project view, navigate to configuration > config > Localizations > c_Resource Bundle 'display'. Assuming that you are modifying the display key for U.S. English, open display.properties and search for the following text string:

Java.Invariant.*

For example:

Java.Invariant.Modifier.RateAboveUpperBound

contains the display key:

The rate modifier value “{0}” cannot exceed the allowed maximum “{1}”.

During product model verification, PolicyCenter replaces the variables {0} and {1} with the actual values.