ReassignAllocations

The ReassignAllocations business rule is used to tell the system what funds to use in conjunction with Assignment. This can be used to apply all money into a defined fund. This is useful when the selection of allocation by the end user should be restricted. An allocation record is created when this rule is processed. The allocation record contains the fund the money is moving into. This business rule can also be used to pull all money from a specified fund into another fund.     

The ReassignAllocations business rule builds allocations that can be used by an Assignment configured within the Transaction to which the rule is attached. The rule can be used for most of the Assignment Types and is inappropriate for Assignment Types that generate their own allocations.

  • An Assignment Type withdrawing money contains the allocations generated by the rule's <From> element.
  • An Assignment Type adding money contains the allocations generated by the rule's <To> element.
  • An Assignment Type that transfers, exchanges or switches money from a set of funds to another set of funds generates the allocations from both elements, <From> and <To>.

Activity or Product/Plan configuration design can allow for user allocation input because the allocations generated by the ReassignAllocations rule takes the precedence and replace any user entered allocations.

Note: In some activity or Product/Plan designs, a user does not enter activity allocations and the ReassignAllocations is the sole provider of the activity's allocations.

The source of the allocations generated by the ReassignAllocations rule can be the result of SQL statements, the Plan's defined allocations, any one of many Policy allocations, any one or more of the Plan's Models or any collection of funds created by the activity's math.

Allocations identify the parent funds in which money is moved and the amount, percentage or number of units to move.

Note:
- This should be used in lieu of configuring any Allocation elements. Even if allocations tags are configured and selected in an activity, the attached ReassignAllocation business rule configuration takes precedence and applies money according to the business rule.  
- ReassignAllocations writes to AsAllocation at the activity processing level. It will also overwrite the presence of the allocation element and any previous allocation records and writes the new records at the point the activity is saved.
- Used with transactions like FullSurrender, AutoTransfer (where the money is moved from one fund to another), InitialPremium, etc.

Rule Usage

  • Fixed billed and payment products with no investment feature can benefit from a separation of payment acceptance activities from the activities paying costs and expenses when due.
  • Activities for Products with a single investment fund. Suitable for whole life products or term life with a cash value option or single funded cash value products.
  • Activities for Products where allocations are defined by configuration and not user input.
  • Activities where user input can be conditionally replaced by predefined allocations or calculated within activity math.
ReassignAllocations: Elements And Attributes
Element Attributes Parent Element Description Element/Attribute Vlaues
<ReassignAllocations>     This is the root element for the rule.  
<From>   <ReassignAllocations>

Optional:

This element identifies the funds from which money will be removed.  The element's value is a SQL statement when the COLLECTION, ALLOCATIONMETHOD and WRITEALLOCATIONSET attributes are not present on this element.

This element cannot be used to add money to funds.

  • sql statement

    • sql must return a Fund GUID, an allocation method and a value

    • allocation method is a valid code value from AsCodeAllocationMethod

    • the value must be a negative value representing a ratio, a monetary amount or a number of units

  COLLECTION <From>

Optional:

This attribute identifies the funds from which money will be removed through a collection type MathVariable. 

The ALLOCATIONMETHOD attribute is required along with this attribute.

  • math variable

    • the variable must be a collection

    • the collection must be constructed with:

      • parent FundGUID and Percent when ALLOCATIONMETHOD is '01'

      • parent FundGUID and monetary value when ALLOCATIONMETHOD is '02'

      • parent FundGUID and number of units when ALLOCATIONMETHOD is '03'

  WRITEALLOCATIONSET <From>

Optional:

This attribute indicates when the sourced allocation should also create AllocationSet records to emulate UI entered allocations.  This allows the same Activity to contain a WriteDefaultAllocations rule.  This Activity can then remove money as instructed by a set of removal allocations and update a Policy Allocation, via the WriteDefaultAllocations rule, with the same set of removal allocations. 

The ALLOCATIONMETHOD attribute is required along with this attribute.

  • No

    • default

    • AllocationSet records are not created by this rule

  • Yes

    • AllocationSet records are created by this rule

  ALLOCATIONMETHOD <From>

Optional:

This attribute provides the allocation method that explains the value portion of the collection provided in the COLLECTION attribute or <Fund> sub-element.  The methods applicable in this rule are limited to 3 values. 

This attribute is required when either the COLLECTION or WRITEALLOCATIONSET attribute is configured.

  • 01

    • percent

    • this is an applicable method regardless of the value of the WRITEALLOCATIONSET attribute

  • 02

    • monetary amount

    • this is an applicable method regardless of the value of the WRITEALLOCATIONSET attribute

  • 03

    • number of units

    • this is not an applicable method when WRITEALLOCATIONSET attribute has a Yes value

<Funds>   <From>

Optional:

This element defines a list of funds and their ratios or amounts to be removed by the assignment. 

This element is required when the WRITEALLOCATIONSET attribute is Yes. 

 
<Fund>   <Funds>

Required:

This element provides the list of funds through a collection.  

  • math variable

    • the variable must be a collection

    • the collection must be constructed with:

      • parent FundGUID and ratio when ALLOCATIONMETHOD is '01'

      • parent FundGUID and monetary value when ALLOCATIONMETHOD is '02'

      • parent FundGUID and number of units when ALLOCATIONMETHOD is '03'

<To>   <ReassignAllocations>

Optional:

This element identifies the funds to which money will be added.  Money can be applied to an Activity through a combination of allocations of Funds and/or one or more Models. The element's value is a SQL statement when the COLLECTION, ALLOCATIONMETHOD, LEVEL, TYPECODE, MODELNAME and WRITEALLOCATIONSET attributes are not present on this element.

Allocations can be defined in one of four ways.

  1. Independent fund allocations can be provided to the rule through the COLLECTION attribute.

  2. Independent fund allocations can be provided to the rule through the <Funds> sub-element structure.

    • The <Funds> sub-element structure's ALLOCATIONPERCENT values must total

  3. One or more Models can be provided to the rule through the <Models> sub-element structure.

    • The <Models> sub-element structure's ALLOCATIONPERCENT values must total

  4. One or more Models in combination with one or more independent fund allocations can be provided to the rule through the <Models> and <Funds> sub-element structures.

    • The <Models> sub-element structure's ALLOCATIONPERCENT values and the <Funds> sub-element structure's ALLOCATIONPERCENT must total

This element cannot be used to remove money from funds.

  • sql statement

    • sql must return a Fund GUID, an allocation method and a valueallocation method is a valid code value from AsCodeAllocationMethod

    • the value must be a positive value representing a percentage, a monetary amount or a number of units

  COLLECTION <To>

Optional:

This attribute identifies the funds to which money will be added through a collection type MathVariable. 

The ALLOCATIONMETHOD attribute is required along with this attribute.

  • math variable

    • the variable must be a collectionthe collection must be constructed with:

    • parent FundGUID and ratio when ALLOCATIONMETHOD is '01'

    • parent FundGUID and monetary value when ALLOCATIONMETHOD is '02'

    • parent FundGUID and number of units when ALLOCATIONMETHOD is '03'

  WRITEALLOCATIONSET <To>

Optional:

This attribute indicates when the sourced allocation should also create AllocationSet records to emulate UI entered allocations. This allows the same Activity to contain a WriteDefaultAllocations rule.  This Activity can then add money as instructed by a set of allocations and update a Policy Allocation, via the WriteDefaultAllocations rule, with the same set of allocations. 

The COLLECTION and ALLOCATIONMETHOD attributes are required along with this attribute.

  • No

    • default

    • AllocationSet records are not created by this rule

  • Yes

    • AllocationSet records are created by this rule

  ALLOCATIONMETHOD <To>

Optional:

This attribute provides the allocation method that explains the value portion of the collection in the COLLECTION attribute or <Fund> element.  The methods applicable in this rule are limited to 3 values. 

This attribute is required when the COLLECTION attribute is configured.

  • 01

    • ratio

    • this is an applicable method regardless of the value of the WRITEALLOCATIONSET attribute

  • 02

    • monetary amount

    • this is not an applicable method when WRITEALLOCATIONSET attribute has a Yes value

  • 03

    • number of units

    • this is not an applicable method when WRITEALLOCATIONSET attribute has a Yes value

  LEVEL <To>

Optional:

This attribute provides a source of an allocation that can exist on the Plan, Policy or a Model. Allocations that apply money can be persisted at any of these levels and this is a short cut to those allocations.

  • Plan

    • the allocation is sourced from the Plan allocation (allocation type is 01)

  • Policy

    • the allocation is sourced from one of the Policy allocations (allocation type is not 01 and 03)

    • the TYPECODE attribute is required to identify which Policy allocation

  • Model

    • the allocation is sourced from a defined Model

    • the MODELNAME attribute is required to identify the Model

  TYPECODE <To>

Optional:

This attribute identifies which of the Policy allocations will be the source of the Activity's allocations.

This attribute is required when the LEVEL attribute is Policy.

  • code value

    • valid values come from AsCodeAllocationType

    • valid value cannot be 01 and 03

  MODELNAME <To>

Optional:

This attribute identifies which of the defined Model allocations will be the source of the Activity's allocations.

This attribute is required when the LEVEL attribute is Model.

  • literal

    • valid value is a defined Model's name

  • Policy:[field name]

    • this is a Policy's dynamic field 

<Models>   <To>

Optional:

This element provides a structure to define one or more Models to supply as the Activity's allocations. 

 
<Model>   <Models>

Required, Repeatable:

This element provides a single Model that becomes the Activity's allocation.  This element is repeated to allocate money to more than one Model.

  • math variable

    • the variable must be a collection

    • the collection must be constructed with a parent Model FundGUID and a ratio of the Model fund's allotted amount

    • the parent FundGUIDs in the collection should belong to the Model named by the MODELNAME attribute

  ALLOCATIONPERCENT <Model>

Required:

This attribute provides a ratio of the applied amount to allocate to the  specific Model.  The total of ALLOCATIONPERCENT values cannot exceed 1 and can total less than 1.

 
  MODELNAME <Model>

Required:

This attribute provides the name of the Model being used to source the Activity's Allocation.

  • literal

    • valid value must be a Model name

  • math variable

    • valid value of the math variable must be a Model name

<Funds>   <To>

Optional:

This element provides a structure to define one or more Funds to supply as the Activity's allocations.

 
<Fund>   <Funds>

Required, Repeatable:

This element provides a single collection of independent Funds that becomes the Activity's allocation. This element is repeated to provide multiple sets of Allocations.

  • math variable

    • the variable must be a collection

    • the collection must be constructed with a parent FundGUID and a ratio of the amount to apply

  ALLOCATIONPERCENT <Fund>

Required:

This attribute provides a ratio of the applied amount to allocate to the set of funds provided by the parent <Fund> element.

  • math variable

    • valid value must be between 0 and 1

XML Schema

<!-- Simple removal allocation -->
<ReassignAllocations>
    <From>[sql statement]</From>
    ...
</ReassignAllocations>
 
<!-- Removal allocation from a collection -->
<ReassignAllocations>
    <From COLLECTION="[math variable]" ALLOCATIONMETHOD="[01 | 02 | 03]"></From>
    ...
</ReassignAllocations>
 
<!-- Removal allocation to build an AllocationSet -->
<ReassignAllocations>
    <From ALLOCATIONMETHOD="[01 | 02]" WRITEALLOCATIONSET="[No | Yes]">
        <Funds>
            <Fund>[math variable]</Fund>
        </Funds>
    </From>
    ...
</ReassignAllocations>
 
<!-- Simple apply allocation -->
<ReassignAllocations>
    ...
    <To>[sql statement]</To>
</ReassignAllocations>
 
<!-- Apply allocation from a collection -->
<ReassignAllocations>
    ...
    <To COLLECTION="[math variable]" ALLOCATIONMETHOD="[01 | 02 | 03]"></To>
</ReassignAllocations>
 
<!-- Apply allocation from Plan allocations -->
<ReassignAllocations>
    ...
    <To LEVEL="Plan"></To>
</ReassignAllocations>
 
<!-- Apply allocation from Policy allocations -->
<ReassignAllocations>
    ...
    <To LEVEL="Policy" TYPECODE="[code]"></To>
</ReassignAllocations>
 
<!-- Apply allocation from a Model allocation -->
<ReassignAllocations>
    ...
    <To LEVEL="Model" MODELNAME="[lilteral | Policy:PolicyField]"></To>
</ReassignAllocations>
 
<!-- Apply allocation to build an AllocationSet to update Policy Allocations -->
<ReassignAllocations>
    ...
    <To ALLOCATIONMETHOD="01" WRITEALLOCATIONSET="[No | Yes]">
        <Models>
            <Model ALLOCATIONPERCENT="[math variable]" MODELNAME="[literal | math variable]">[math variable]</Model>
            <Model>...</Model>
        </Models>
        <Funds>
            <Fund ALLOCATIONPERCENT="[math variable]">[math variable]</Fund>
            <Fund>...</Fund>
        </Funds>
    </To>
</ReassignAllocations>

XML Examples

Apply Allocation from Policy Allocation Example

<ReassignAllocations>
    <To LEVEL="Policy" TYPECODE="14"></To>
</ReassignAllocations>

Transfer to Model Allocation Example

<ReassignAllocations>
    <From>SELECT AsAllocation.FundGUID, '01',-1 FROM AsAllocation WHERE AsAllocation.TypeCode = '02' AND AsAllocation.RelatedGUID = '[Policy:PolicyGUID]'</From>
    <To LEVEL="Model" MODELNAME="LifeStyle Moderate Portfolio"/>
</ReassignAllocations>

Removal Allocation from Collection Example

<ReassignAllocations>
     <From COLLECTION="RemovalCollectionMV" ALLOCATIONMETHOD="01" />
</ReassignAllocations>

Transfer Allocation to build AllocationSet

<ReassignAllocations>
    <From ALLOCATIONMETHOD="02" WRITEALLOCATIONSET="Yes">
        <Funds>
            <Fund>DollarCostAvgCollectionMV</Fund>
        </Funds>
    </From>
    <To ALLOCATIONMETHOD="01" WRITEALLOCATIONSET="Yes">
        <Funds>
            <Fund ALLOCATIONPERCENT="ApplyPctMV">DollarCostAvgApplyCollectionMV</Fund>
        </Funds>
    </To>
</ReassignAllocations>