CopyToPendingActivityFields

Description

This business rule can be used to update field values in Policy activities that have not yet become active on the system and have not processed the transaction math. Only Policy activities that are in a pending type of status are eligible to have field values changed. Pending statuses are defined as activities that have not yet run the Transaction Math section or any attached rules, typically statuses '02' and '09' (Pending and Pending with errors respectively). Plan level activities will not support the undo/redo processing of the CopyToPendingActivityFields rule.

Some fields of the target activity cannot be updated. Even if they are configured, the system will ignore instructions to change the values of these fields:

Undo/Redo Processing

Reversal processing with the CopyToPendingActivityFields rule has the potential to be very complicated and as a best practice, the Source and/or Target Activities should be configured as non-reversible. However, these are the considerations for conventional undo/redo processing.

Once both the Source and Target Activities become active and the Target Activity goes though redo processing, it will retain the field values as of when it was active. If both go through redo processing, first the Target Activity will become shadowed and a new pending record will be inserted (having the same field values as when it was active). Second, the Source Activity will become shadowed and a new pending record will be inserted (having the same field values as when it was active). When the Source Activity becomes shadowed, the system should identify all shadowed activities that it had updated to see if those activities now exist in a pending status using the ActivityGUID / RelatedGUID chain. Since OIPA doesn’t currently store values of pending activity fields in a history table, the system will need to look to the Source Activity to see which Target Activities were updated. Obviously, if the Target Activities are not found, the system cannot modify any data. At this point the specified fields of the new pending records are reverted to their prior values by the system (time stamps may be needed to find the correct values). The math of the Source Activity should be taken into consideration that the Target Activity may go through multiple iterations in order to update its fields.

If the Source Activity is inserted prior to an active spawned Target Activity, it will shadow the Target Activity and insert a new pending record. This newly created Target Activity record will be linked to its parent through the ActivityGUID/RelatedGUID chain to maintain undo/redo compatibility of the system.

CopyToPendingActivityFields can be configured to update Activity fields only, or Withholding fields only with the processing of one activity. The ActivityFields and WithholdingFields elements are each optional, but at least one of the two is required in the configuration for each Activity element, and both cannot be present in the same Activity.

CopyToPendingActivityFields Element/Attribute Table
Element Definition Attribute Element/Attribute Value and Description

<CopyToPendingActivityFields>

The opening and closing tags of the business rule.

Optional:Defines the activity to apply changes. Not applicable if using a FromCollection element.

MathVariable: name of the MathVariable containing ActivityGUID in a valid pending status ('02', '09' ).

<Activity>

Required, repeatable element:

Defines the activity to apply changes.

   
  ACTIVITYGUID

Optional Attribute:

Not applicable if using FromCollection element. MathVariable containing ActivityGUID in a valid pending status (‘02’, ‘09’).

<Tests>

Optional:

Allows for further definition of the activities that may be updated.

   

<Test>

A conditional statement that tests a MathVariable or Field against another MathVariable, Field, or literal value.

   

<ActivityFields>

Optional element:

Begins Activity Field configuration.

 

Either ActivityFields or WithholdingFields (but not both) must be specified for each Activity configured.

<Fields>

Required:    

<Field>

Required:    

<From>

Required if FromCollection is not present.   MathVariable: Name of the MathVariable.

<FromCollection>

Required if From is not present.   MathVariable: MathVariable of Type = Collection and DataType = Map.

<To>

Required:Name of the target field to update.  

String: Activity field name.

When working with money fields, this is a collection of money fields or currency variables.

<Currency>

Optional:

Currency code

 

Literal three character currency code or MathVariable.

<CurrencyCollection>

Optional:  

Currency Collection MathVariable.

<WithholdingFields>

Optional element:

Begins Withholding Field configuration.

 

Either ActivityFields or WithholdingFields (but not both) must be specified for each Activity configured.

<Fields>

Required:

Same as Fields in the ActivityFields element above.

   

XML Example

Update Field

<CopyToPendingActivityFields>
<Activity ACTIVITYGUID=”AnnuityPaymentActiviyGUID”>
<ActivityFields>
<Fields>
<Field>
<From>NewEffectiveDate</From>
<To>EffectiveDate</To>
<Field>
<Fields>
</ActivityFields>
</Activity>
<Activity ACTIVITYGUID="SingleActivityGUID">
<WithholdingFields>
<Fields>
<Field>
<From>Withholding:StatePercent</From>
<To>StatePercent</To>
</Field>
</Fields>
</WithholdingFields>
</Activity>
</CopyToPendingActivityFields>

Use of <FromCollection> to update records:

<CopyToPendingActivityFields>
<Activity>
<Tests>
<Test>Activity:UpdateMultipleActivities &lt;&gt; '02' 
And Activity:UpdateFieldInd = '01'</Test>
</Tests>
<ActivityFields>
<Fields>
<Field>
<FromCollection>EffectiveDateCollection</FromCollection>
<To>EffectiveDate</To>
</Field>
</Fields>
</ActivityFields>
</Activity>
</CopyToPendingActivityFields>

XML Schema

<CopyToPendingActivityFields>
<Activity ACTIVITYGUID="">
<Tests>
<Test>conditional statement</Test>
</Tests>
<ActivityFields>
<Fields>
<Field>
<From>[activity field|math variable]</From>
<To>[field name]</To>
</Field>
</Fields>
</ActivityFields>
</Activity>
<Activity ACTIVITYGUID="">
<Tests>
<Test>conditional statement</Test>
</Tests>
<WithholdingFields>
<Fields>
<Field>
<From>[activity field|math variable]</From>
<To>[field name]</To>
</Field>
</Fields>
</WithholdingFields>
</Activity>
<Activity>
<ActivityFields>
<Tests>
<Test>conditional statement</Test>
</Tests>
<Fields>
<Field>
<FromCollection>[math variable]</FromCollection>
<To>[field name]</To>
</Field>
</Fields>
</ActivityFields>
</Activity>
<Activity>
<WithholdingFields>
<Tests>
<Test>conditional statement</Test>
</Tests>
<Fields>
<Field>
<FromCollection>[math variable]</FromCollection>
<To>[field name]</To>
</Field>
</Fields>
</WithholdingFields>
</Activity>
</CopyToPendingActivityFields>