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 ReassignAllcations 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
Allocationelements. 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.
| Element/Tag | Parent Element | Attribute | Definition | Element/Attribute Value and Description |
|---|---|---|---|---|
|
<ReassignAllocations> |
|
The opening and closing tag for the business rule. |
|
|
|
<From> |
<ReassignAllocations> |
|
Optional: The element identifies the funds from which money to be removed. The value of the element is a SQL statement when the attributes COLLECTION and ALLOCATIONMETHOD are not provided. The result identifies the FundGUID, a code value from AsCodeAllocationMethod and a negative value representing a percentage of the fund, an amount or number of units to remove. The same information is provided without a SQL statement through the optional attributes. Note: This element is applicable to assignments that remove money from a fund. Assignments that add money to funds will not have a <From> element. |
Required
element value: |
| <From> | COLLECTION |
Optional: The element specifies a collection type MathVariable. The collection is constructed as FundGUID and Percent pairs of FundGUID and Amount pairs. The ALLOCATIONMETHOD attribute is necessary to indicate what the second value of the pair means. |
Math variable collection of either FundGUID/Percent or FundGUID/Amount value pairs. | |
| <From> | ALLOCATIONMETHOD |
Optional: Specifies the allocation method that is expressed in the COLLECTION attribute. The value corresponds to the Percent and Amount codes of AsCodeAllocationMethod. |
Code value from AsCodeAllocationMethod. The following code values are supported: 01: Percent 02: Amount |
|
|
<To> |
<ReassignAllocations> |
|
Optional: The element identifies the funds to which money should be added. The value of the element is a SQL statement when the attributes COLLECTION, ALLOCATIONMETHOD, LEVEL, TYPECODE, MODELNAME and WRITEALLOCATIONSET are not present. The result identifies the FundGUID, a code value from AsCodeAllocationMethod and a positive value representing a percentage of the fund or an amount to add. The same information is provided without a SQL statement through the optional attributes. Note:
This element is applicable to assignments that add money to a fund. Assignments that remove money from funds will not have a <To> element. |
Required
element value: |
| <To> | COLLECTION |
Optional: Specifies a collection type MathVariable. The collection is constructed as FundGUID and Percent pairs or FundGUID and Amount pairs. The ALLOCATIONMETHOD attribute is necessary to indicate what the second value of the pair means. |
Math variable collection of either FundGUID/Percent or FundGUID/Amount value pairs. | |
| <To> | ALLOCATIONMETHOD |
Optional: Specifies the allocation method that is expressed in the COLLECTION attribute. The value corresponds to the Percent and Amount codes of AsCodeAllocationMethod. The methods of Percent, Amount and Units are supported. If WRITEALLOCATIONSET is Yes, only 01 (Percent) is supported. |
Code value from AsCodeAllocationMethod. The following code values are supported: 01: Percent 02: Amount 03: Units |
|
| <To> |
LEVEL |
Optional: Allocations can be defined at the level of plan, policy, or allocation model. The funds to apply money to may be persisted in a structure defined as a plan, policy or model allocation. Attribute TYPECODE is required for Policy value. Attribute MODELNAME is required for Model value. |
Plan / Policy / Model | |
| <To> |
TYPECODE |
Optional: Defines the allocation type. The attribute provides the AsCodeAllocationType that further identifies the exact Policy allocation. Required when usage LEVEL=”Policy”. |
Literal value Use a TypeCode from AsCodeAllocationType. |
|
| <To> |
MODELNAME |
Optional: If the LEVEL is defined as Model, this attribute specifies the Model name. |
Literal value / Policy:PolicyField (dynamic field) | |
| <To> | WRITEALLOCATIONSET | Optional: Indicates if the target allocation should create Allocation Set records to emulate UI allocations. Also indicates that Models and/or Funds elements will be used to define the target allocation. Default value is 'No' | Literal value, Yes / No | |
| <Models > | <To> | Optional:. Opening element for a list of Models allocations. | ||
| <Model> | <Models > |
Optional, repeatable: Defines a list of funds in the model to use in the assignment and the overall percentage of the assignment amount to apply to the model. The math variable holds a collection of parent FundGUIDs and percentages. |
Math variable collection of FundGUID/Percent | |
| <Model> | ALLOCATIONPERCENT |
Required: Defines the percentage of the applied amount to be distributed among the funds of the Model. |
Math variable The value must be between 0 and 1. |
|
| <Model> | MODELNAME | Required: Specifies the Model name. | Literal value or Math variable | |
| <Funds> | <To> | Optional:Defines a list of funds and their percentages to be used by the assignment. | ||
| <Fund> | <Funds> |
Required: Defines a list of funds to be used in the assignment and the overall percentage of the assignment amount to apply to this collection of funds. The math variable holds a collection of parent FundGUIDs and percentages. |
Math variable |
|
| <Fund> | ALLOCATIONPERCENT |
Required: Defines the overall percentage to apply to the funds in the collection. The value must be between 0 and 1. |
Math variable |
XML Schema
<ReassignAllocations>
<!-- Generate removal allocations from a math collection --><From COLLECTION="[math variable]" ALLOCATIONMETHOD="[01 | 02]"></From>
<!-- Generate removal allocations from SQL statement execution --><From>[query]</From>
<!-- Generate "apply" allocations from SQL statement execution --><To>[query]</To>
<!-- Generate "apply" allocations from Model or Plan allocation definition or Policy allocations -->
<To LEVEL="[Plan | Policy | Model]" TYPECODE="[code value]" MODELNAME=""[literal| Policy:[field] | mathvariable]></To>
<!-- Generate "apply" allocations from a math collection -->
<To COLLECTION="[math variable]" ALLOCATIONMETHOD="[01 | 02 | 03]" WRITEALLOCATIONSET="[Yes | No]"></To>
<!-- Support use cases where there are multiple models to apply money with additional singular funds outside of the model definition -->
<To>
<Models>
<Model ALLOCATIONPERCENT="[math variable]" MODELNAME="[literal | math variable]">[math variable]</Model>
<Model>...</Model>
</Models>
<Funds>
<Fund ALLOCATIONPERCENT="[math variable]">[math variable]</Fund>
</Funds>
</To>
</ReassignAllocations>
XML Examples
Reassign To Plan Default transaction
<ReassignAllocations>
<From>SELECT AsFund.FundGUID, '01', -1 FROM AsFund
JOIN AsPlanFund ON AsPlanFund.FundGUID = AsFund.FundGUID AND AsFund.FundName='Money Market Fund'
WHERE AsPlanFund.PlanGUID='[Policy:PlanGUID]'</From>
<To LEVEL="Plan" TYPECODE="01"/>
</ReassignAllocations>
Modify Allocation
<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>
Alter Allocation
<ReassignAllocations>
<From>SELECT AsAllocation.FundGUID, '01',-1 FROM AsAllocation
WHERE AsAllocation.TypeCode = '02' AND AsAllocation.RelatedGUID = '[Policy:PolicyGUID]'</From>
<To LEVEL="Model" MODELNAME="Policy:StandardModel"/>
</ReassignAllocations>
Example - Transfer
<ReassignAllocations>
<From>SELECT AsFund.FundGUID, '01', -1 FROM AsFund JOIN AsPlanFund ON AsPlanFund.FundGUID = AsFund.FundGUID AND AsFund.FundName='Money Market Fund' WHERE AsPlanFund.PlanGUID='[Policy:PlanGUID]'</From>
<To LEVEL="Plan" TYPECODE="01"></To>
</ReassignAllocations>
Example - Apply money
<ReassignAllocations>
<To LEVEL="Model" MODELNAME="LifeStyle Moderate Portfolio"></To>
</ReassignAllocations>