DirectScale's compensation plan system is option-based. You create different options, or “Rules”, to program many different compensation plan types. The system cycles through every Rule to see if it's meets the defined Conditions. Once an Associate meets the Rule conditions, it awards volume, bonus, or a new Rank. Use Rules for qualifying and defining Ranks and bonuses. You reference the Rule names in other Rules as requirements to meet.

<Rule Name="Act" Description="Active">
    <And>
        <PVCondition Volume="PS" Min="140" Max="-1" Description="Total Personal and Customer QV"/>
        <AssociateTypeCondition AssociateBaseType="1" Description="Distributor"/>
    </And>
    <Result>
        <SetStat Name="ComACT" Description="Commission Active"/>
    </Result>
</Rule>

Each Rule has a Name and Description. The names have a ten-character max. You use the names later on in the compensation plan to reference the Rule. The description is a way to keep in mind what this Rule is doing.

Inside of each Rule, you have a Condition or group of Conditions.



Conditions

You can group Conditions with Conditional operators:

    <And>
        <PVCondition Volume="PS" Min="140" Max="-1" Description="Total Personal and Customer QV"/>
        <AssociateTypeCondition AssociateBaseType="1" Description="Distributor"/>
    </And>

In this example, it takes a <PVCondition>, which checks if a Volume Accumulator contains a Min amount for the Associate. This example references a Volume Accumulator created earlier in the compensation plan called "PS". The Associate must have a minimum of 140 volume. The Max parameter is set to -1, which in the system always means infinity, so there's essentially no maximum cap.

The other condition passed is <AssociateTypeCondition>, which checks the Associate Type. It passes the parameter AssociateBaseType set to Associate Type 1, which, by default, is a Distributor Associate. You can pass any of your created Associate Types here.

To meet this Rule, an Associate must be a Distributor and have at least 140 of the PS volume. If both of those conditions are true, they will qualify for the <Result>.

You can also set up a <NotHitOption>:

<Rule Description="Not a Distributor" Name="NotDist">
    <AND>
        <NotHitOption Rule="Dist" />
    </AND>
</Rule>

Using <NotHitOption> negates the passed Rule; meaning, if the Rule "Dist" is true for an Associate, then the preceding "NotDist" Rule will be false. Likewise, if "Dist" were false, then "NotDist" would be true. <NotHitOption> is a way to determine if an Associate is not something rather than checking if they are. For example, it's a way to find out who are Distributors and who are just customers.


<AND>

Logical AND. All statements in the AND are looked at as a group. If you have a <Rule> with three statements in the <AND>, every statement must be true for the Rule condition to be true. If one statement is false, then the Rule is not met.

Example

 <Rule Description="PS Commission Active" Name="PSComACT">
            <And>
                <PVCondition Max="-1" Min="200" Volume="PS" />
                <MeetsRule Rule="Aff" />
            </And>
</Rule>

Put simply:

<Do This>

<Do This>

AND

<Do This>


<OR>

Logical OR. Each <OR> is looked at individually. If you have a <Rule> with three statements in the <OR>, only one of the statements must be true for the Rule condition to be true.

Example

<Rule Name="Member" Description="Member">
         <Or>
            <AssociateTypeCondition AssociateBaseType="4" />
            <AssociateTypeCondition AssociateBaseType="5" />
            <AssociateTypeCondition AssociateBaseType="6" />
         </Or>
</Rule>

Essentially, you could look at it like this:

<Do This>

OR

<Do This>

OR

<Do This>


<ANDNOT>

Logical NOT. You can mark an exception for a particular condition. You can meet the <Rule> as long as your condition is not X.

Example

<Rule Name="FSNotPay" Description="Fast Start Not Paid">
         <AndNot>
            <PaidOnCondition Bonus="Fast Start 1" Rule="FSNotPay" IncludePastPeriods="True" IncludeCurrentPeriod="True" />
         </AndNot>
 </Rule>

It's like saying, "It's anything BUT this."



Associate Status

<Rule Name="Active" Description="Qualified for payments">
  <And>
    <PVCondition Volume="QualifiedVolume" Min="100" Max="-1" />
  </And>
</Rule>

This Rule determines a status used by other Rules. In the example, the Condition to meet to be Active and qualified are:

  • At least 100 Qualified Volume (QV)
  • A max QV of infinity (-1)


Associate Types

You can assign a Rule to a specific Associate Type. There are three default Base Associate Types:

  1. Distributor
  2. Retail Customer
  3. Preferred Customer

You can read more about Base Associate Types in the following Help Center article: Base Associate Types, Associate Types, and Price Groups Explained.

You can add more Associate Types if necessary. The following example demonstrates setting up each Associate Types Rule definition.

<Rule Description="Distributor" Name="Dist">
      <And>
        <AssociateTypeCondition AssociateBaseType="1" />
      </And>
</Rule>


Ranks

<Rule Name="R10" Description="Promoter Rank">
    <And>
        <MeetsRule Rule="Act" ShowDependant="True"/>
        <MeetsRule Rule="BinQual" ShowDependant="True"/>
    </And>
    <Result>
        <SetRank Rank="10"/>
    </Result>
</Rule>

This is an example of a Rank Rule. Here, we have a Condition called <MeetsRule> that passes in a Rule name. The Associate must meet both the passed Rules (Act and BinQual) to get the <Result> of Rank 10.

Another example of a Rank Rule:

<Rule Description="Rank 2" Name="R20">
    <And>
        <MeetsRule Rule="R10"/>
        <PVCondition Max="-1" Min="100" Volume="RRQV"/>
        <GVCondition PersonalVolume="RRQV" MaxPersonal="-1" IncludeCompressed="True" CompressRule="" Level="-1" MaxPerLeg="-1" Max="-1" Min="500" TreeVolume="GV"/>
    </And>
    <Result>
        <SetRank Rank="20"/>
    </Result>
</Rule>

Similar to the previous example but for this one, the Associate must:

  • Meet the Rule named "R10"
  • Have at least 100 "RRQV" volume
  • Have at least 500 in either group volume (TreeVolume="GV") or personal volume (PersonalVolume="RRQV") and all of it can come from one leg (MaxPerLeg="-1"). Learn more about Tree Volume.

If they get true for all those conditions, then they will be granted Rank 20.

✅Add Ranks to Database

After creating Rank Rules, add the Ranks to the Database. Learn more in Adding Rank Values to the Database.



Results

Whenever somebody meets a Rule, you can do different Results. There is this Result that is setting an Associate's Rank to 10:

<Result>
    <SetRank Rank="10"/>
</Result>

Or this Result that sets the Rank to 20:

<Result>
    <SetRank Rank="20"/>
</Result>

Because the Rules are checked in order, the Associate will be made Rank 10, then immediately changed to Rank 20, and so on until a Rule returns as false. The last Rule that returns true will be the Associate's Rank.

You can have a Result that sets a KPI (Stat):

<Result>
    <SetStat Name="Qual" Description="Qualified"/>
</Result>

If you do it this way, it is a true or false KPI. If you meet the rule, you get a KPI called "Qual" that says yes or no if you are "Qualified".

📘Note

It's best practice to keep your KPI names and the Rules they represent the same to avoid confusion.

Learn more about KPIs.


Payments

Past the Rank Rules, there are Rules that determine commission payments. In a <Result>, you have a <Payment> determined by the Payment Source and Payment Group. Here is a basic Payment Rule:

<Rule Description="Enrollment 1" Name="UNL1">
    <And>
        <MeetsRule Rule="R10"/>
        <NotHitOption Rule="R20"/>
    </And>
    <Result>
        <Payments>
            <Payment Pool="MasterPool" Bonus="Generation Pay" Tag="" MetaData="">
                <Group>
                    <GenerationGroup Tree="Enrollment" Generation="1" CompressOption="R10" BeginLevel="1"/>
                </Group>
                <Source>
                    <PVPay Volume="CV" Percent="8" Comment="[backofficeId] ([percent]% of [acrVolume])"/>
            </Source>
            </Payment>
        </Payments>
</Result>
</Rule>

If you meet both Conditions, the Result is a Payment.

This example looks at the <GenerationGroup>, the group of Associates in a particular Generation of the Tree; in this case, the Generation is 1. Then, the <Source> goes of this <Group> of Associates. This example gets the <PVPay> and gives the Associate that meets the Rule 8% of Generation 1 CV volume.

You could also set up multiple payments in a Result:

<Result>
    <Payments>
        <Payment Pool="MasterPool" Bonus="Generation Pay" Tag="" MetaData="">
            <Group>
                <GenerationGroup Tree="Enrollment" Generation="1" CompressOption="R10" BeginLevel="1"/>
            </Group>
            <Source>
                <PVPay Volume="CV" Percent="8" Comment="[backofficeId] ([percent]% of [acrVolume])"/>
            </Source>
        </Payment>
        <Payment Pool="MasterPool" Bonus="Generation Pay" Tag="" MetaData="">
            <Group>
                <GenerationGroup Tree="Enrollment" Generation="2" CompressOption="R10" BeginLevel="1"/>
            </Group>
            <Source>
                <PVPay Volume="CV" Percent="5" Comment="[backofficeId] ([percent]% of [acrVolume])"/>
            </Source>
        </Payment>
    </Payments>
</Result>

Read more: Payments



Options in a Commission Profile

The only place in the Admins Rule names appear are in Commission Profiles.

Options panel

The Options panel references each Rule by name with the corresponding amount of who met each Rule.