Alternative Configuration: Solution Overview & Use Cases
The NetSuite Advanced Revenue Management (ARM) module excludes standalone (i.e. a revenue element with a return of element specified) negative-quantity revenue elements created by Zone Advanced Billing from fair value allocation (FVA). For these revenue elements to be included in FVA, a return of element (ROE) must usually be manually incorporated into the revenue arrangement.
In the case of a license swap, a negative-quantity revenue element represents the reduction in licenses for one product, and a positive-quantity revenue element represents the addition of licenses for another product. When these are on the same revenue arrangement, clients wishing to see FVA across the standalone negative and positive-quantity revenue elements may utilize the alternate configuration presented to measure the results of FVA before merging revenue elements.
Using a positive quantity and negative amount when setting up ZAB subscription items for returns and introducing a “return” unit of measure with a set of alternate fair value price records is a large part of the alternative configuration, which supports FVA (including features such as FV range checking) between positive and negative-quantity revenue elements in ARM.
ZAB clients with mid-contract amendments resulting in negative-quantity ZAB Subscription Items (and eventually revenue elements) wishing to see fair value allocation occur among the old and new amendment elements may consider this alternative configuration for its Zone Advanced Billing instance in place of manually overriding fair values on the revenue arrangement or adding additional return of element values.
Alternative Configuration: Before you Begin
A prerequisite feature for this configuration is multiple units of measure. Enable the feature in Setup > Company > Enable Features before following the alternative configuration instructions.
Ensure your use case supports the configuration’s objectives - you must have already set up Zone Advanced Billing, ZoneBilling Revenue, ARM, and Fair Value Price Records before implementing the alternative configuration.
Detailed Alternative Configuration Steps
1. Create a new unit of measure with the name “Return” with:
- A conversion rate of ‘1’
- Base unit = ‘T’
2. Create a custom field on the ZAB Charge record with the label “Return Quantity” as:
- Type = ”Integer Number”
- Store Value = ‘F’
- Default value (formula checkbox = ‘T’) using the following formula:
- case when {custrecordzab_c_amount}<0 then -1* {custrecordzab_c_quantity} else {custrecordzab_c_quantity} end
- This field returns a negative quantity for negative quantity subscription items submitted with a positive quantity and a negative amount (for fair value allocation in ARM); it returns a positive quantity otherwise.
- Prepare a “true” quantity for mapping to the sales transaction (for reporting).
3. Create a ZAB Charge Field Definition with the name “Return Quantity (C)” with:
- Charge Field = “Return Quantity” field created in Step 2
4. Create a Zab Transaction Charge Map with “Charge Map Field” = “Return Quantity (C)" created in Step 3 with:
- Transaction Quantity Field ID = ‘quantity’
5. Create a custom field on the ZAB Charge record with the label “Alternative Quantity” as:
- Type = “Integer number”
- Store Value = ‘F’
- Default value (formula checkbox = ‘T’) using the following formula:
- case when {custrecordzab_c_amount}<0 then {custrecordzab_c_quantity} else null end
- This field returns a positive quantity for mapping to the alternate quantity to the revenue element for negative amount subscription items; it returns null otherwise.
6. Create a ZAB Charge Field Definition with the name “Alternative Quantity (C)” with:
- Charge Field = “Alternative Quantity” field created in Step 5
- Allows the charge field to be added to the ZAB Revenue Configuration (step 14) for mapping to the native NetSuite revenue element.
7. Create a custom field on the ZAB Subscription Item record with the label “Return UOM” as:
- Type = “List/Record”
- List/Record = “Unit”
- Store Value = ‘T’
- Select "Return" on subscription items with a positive quantity and a negative amount.
8. Create a custom field on the ZAB Subscription Item record with the label “Return Units Type” as:
- Type = “List/Record”
- List/Record = “Units Type”
- Store Value = ‘T’
- Select "Return" on subscription items with a positive quantity and a negative amount.
9. Create a ZAB Charge Field Definition with the name “Return UOM (SI)” with:
- Charge Field = “Subscription Item”
- Related Field ID (Join) = the field ID of the ZAB Subscription Item field created in step 7.
- Allows the ZAB Subscription Item field to be added to the ZAB Revenue Configuration (step 14) for mapping to the native NetSuite revenue element.
10. Create a ZAB Charge Field Definition with the name “Return Units Type (SI)” with:
- Charge Field = “Subscription Item”
- Related Field ID (Join) = the field ID of the ZAB Subscription Item field created in step 8.
- Allows the ZAB Subscription Item field to be added to the ZAB Revenue Configuration (step 14) for mapping to the native NetSuite revenue element.
11. Create a custom field on the ZAB Revenue Detail record with the label “Return UOM” as:
- Type = “List/Record”
- List/Record = “Unit”
- Store Value = ‘T’
- Will populate (via the ZAB Update Revenue Details process) "Return" on revenue details created from ZAB Subscription Items with “Return” selected for “Return UOM”; else, null.
12. Create a custom field on the ZAB Revenue Detail record with the label “Return Units Type” as:
- Type = “List/Record”
- List/Record = “Units Type”
- Store Value = ‘T’
- Will populate (via the ZAB Update Revenue Details process) "Return" on revenue details created from ZAB Subscription Items with “Return” selected for “Return Units Type”; else, null.
13. Create a custom field on the ZAB Revenue Detail record with the label “Alternative Quantity” as:
- Type = “Integer Number”
- Store Value = ‘T'
- Will populate (via the ZAB Update Revenue Details process) a positive quantity on revenue details created from ZAB Subscription Item charges having a positive quantity and a negative amount; else, null.
14. Add the following ZAB Revenue Configuration Field Maps to the ZAB Revenue Configuration as Revenue Configuration Field Maps:
- Edit your ZAB Revenue Configuration
- Add Charge Field (Sources) of
- “Alternative Quantity (C)" (created in step 6)
- “Return UOM (SI)” (created in step 9)
- “Return Units Type (SI)” (created in step 10)
- Each with Summary Type = “Maximum”
- Enter the corresponding ZAB Revenue Detail Field (Destinations) of
- “Alternative Quantity” (created in step 13)
- “Return UOM” (created in step 11)
- “Return Units Type” (created in step 12)
- Save your ZAB Revenue Configuration
-
Note: There are strict guidelines for modifying Revenue Configurations
- Never update an in-flight revenue configuration in production or a lower instance where important records are kept. Changes to in-use configurations can result in massive-irreversible changes to revenue records. It will not impact historical GL but can negatively impact future recognition/processing.
- Instead, copy the configuration, modify it, and assign it on a go-forward basis.
- Lock in use revenue configurations using the Lock button.
15. Create a new ZAB Revenue Management Detail Map record to map the “Return UOM” ZAB Revenue Detail field to the alternateunits field on the native NetSuite revenue element during the native NetSuite Update Revenue Arrangements and Plans process:
- Revenue Detail Field = “Return UOM” (created in step 11)
- Revenue Element Field ID = alternateunits (native Revenue Element Field)
- Ignore When Source is Null = ‘T’
- Ensures that alternateunits is only sourced for revenue details with positive quantities and negative amounts; else, null.
16. Create a new ZAB Revenue Management Detail Map record to map the “Return Units Type” ZAB Revenue Detail field to the alternateunitstype field on the native NetSuite revenue element during the native NetSuite Update Revenue Arrangements and Plans process:
- Revenue Detail Field = “Return Units Type” (created in step 12)
- Revenue Element Field ID = alternateunitstype (native Revenue Element Field)
- Ignore When Source is Null = ‘T’
- Ensures that alternateunitstype is only sourced for revenue details with positive quantities and negative amounts; else, null.
17. Create a new ZAB Revenue Management Detail Map record to map the “Alternative Quantity” ZAB Revenue Detail field to the alternatequantity field on the native NetSuite revenue element during the native NetSuite Update Revenue Arrangements and Plans process:
- Revenue Detail Field = “Alternative Quantity” (created in step 13)
- Revenue Element Field ID = alternatequantity (native Revenue Element Field)
- Ignore When Source is Null = ‘T’
- Ensures that alternatequantity is only sourced for revenue details with positive quantities and negative amounts; else, null.
18. For each active Fair Value Formula, create an “Alternate” new copy of the formula with -1*(existing fair value formula).
- This ensures revenue elements with positive quantities and negative amounts are properly evaluated during fair value allocation and that fair value range checking takes place appropriately.
19. For each active Fair Value Price Record, make a copy that includes the fair value formula created in step 18. Ensure with Units Type = Return and Units = Returns.
Post-Configuration Alternative Configuration Walkthrough
1. Set up fair value price lists per the above:
2. Create a new ZAB Subscription record as follows:
- Name = [your choice]
- Start date = “12/15/22”
- End Date = “12/14/23”
- Charge Schedule = “Annual (Anniversary)”
3. Create two subscription items starting and ending at the subscription date, one for 10 of license A and another for 20 of license B. License A costs $600, and License B costs $1100 per unit. These are fixed (recurring) charges:
- Items create revenue plans on “ZAB RA Creation.”
- Revenue Recognition Rules are “Default Standard”
- Do not prorate = ‘T’ on either subscription item.
4. Review Revenue Configuration:
5. Update Revenue Details
6. Once Completed, Run Update Revenue Arrangements and Plans
7. The result should look like this:
Original Subscription, above
Original Revenue Arrangement Detail, above - no issue as all are positive
8. Create a transaction for the original sale using the create transactions process.
9. On 4/21/23 - mid-contract, The customer decides they want -5 of license A, and +4 of license B. Add these to your subscription as new subscription items as such:
- The -5 of License A = enter as a positive 5 quantity, negative amount
- Select Return UOM = Return and
- Select Return Units Type = Return
- Note start date is 4/21/23
- Enter the +4 of License B as usual, positive quantity, positive amount with start date = 4/21/23
- The subscription should look like this:
10. Run Update Revenue Details
11. Once Completed, Run Update Revenue Arrangements and Plans
12. The Subscription should look like this on the Revenue subtab, with the new license swap elements having been created (#17 and #18 in this example):
13. Merge the Elements from the 4/21 deal onto their own Revenue Arrangement using the native “Merge Revenue Arrangements from Linked Sources” page (or a ZAB auto-merge/split profile). This will create an “original” revenue arrangement, one attributable to the license swap. Fair value allocation must occur independently before the client can decide whether to do a prospective merge, retro merge, or no merge at all. Automated processes may be put in place to initiate merges automatically.
14. We see no change in the original revenue arrangement FVA from the original start date revenue elements. The fair value price lookups, carve-out, etc., are identical to step 7 above.
15. However, on the revenue arrangement with the negative quantity sent at a positive 5, we see a different fair value price looked up because of the return units type, uom, and alternate quantity populated on the element. The price list selected is with the negative 1 in the formula, which correctly allows for fair value allocation of the negative quantity element and supports correct range checking and revenue calculations for carve in/out adjustments.
Additional Alternative Configuration Considerations
1. The configuration presented above is to be used in NetSuite/ZAB environments with no net-negative Revenue Arrangements, i.e., the total value of any Revenue Arrangement cannot be negative; otherwise, deferred revenue reclassification entries may not calculate as expected.
2. The alternative configuration must be extensively tested in a sandbox environment and validated before implementation.
3. Completing a prospective merge using this alternative configuration should be considered final, i.e., one should not expect to calculate a retrospective merge after previously conducting a prospective merge. Although this use case should be rare, scenarios where one may want to do this include
- Resolution of variable consideration, or
- In the case that there are non-distinct products/services still being delivered, one of the following is true
- there is an exercise of material rights not handled as a contract continuation, e.g., the value of the exercise is not included in the original order TCV,
- there is an increase in transaction price without adding any new products/services,
- there is an increase in the scope of existing services or
- there is an addition of new products/services not at SSP.