Update a Product on Subscription with Future-dated Updates

Knowledge Center > Subscriptions > Orders > Orders Tutorials > Update a Product in a Subscription > Update a Product on Subscription with Future-dated Updates

Update a Product on Subscription with Future-dated Updates

This feature is only available if you have the Orders feature enabled. We are actively soliciting feedback from a small set of early adopters. If you wish to have access to the feature, submit a request at Zuora Global Support.

You can create an Update Product order action if there is already a future-dated Update Product order action on the subscription. 

For example:

  • A customer subscribes to your Basic Service for one year starting on January 1, 2019.
  • In March, the customer wants to upgrade to your Premium Service on a future date, July 1, 2019. So you create a future-dated Update Product amendment by setting the effective date to July 1, 2019.
  • In April, the customer wants to upgrade to your Special Service starting on May 1, 2019. So you create an Update Product amendment by setting the update date to May 1, 2019. 

The following table lists the services your customer has subscribed to:

Service Name Effective Date and End Date Rate Plan Charge

Basic Service

January 1, 2019 - April 30, 2019

$10/seat/month * 10 seat

Special Service

May 1, 2019 - June 30, 2019

$9/seat/month * 15 seat

Premium Service

July 1, 2019 - December 31, 2019

$8/seat/month * 20 seat

You can create an Update Product order action before a future-dated Update Product order action on the subscription in Zuora UI and REST API.

Use the Zuora Application

You can use the Zuora UI to update a product even when future-dated Update Product order action already exist on the subscription.

To create an Update Product amendment on a subscription with future-dated Update Product amendments:

  1. Follow step 1-9 in Update a Product in a Subscription to select the product for updates.

    BasicService.png

  2. Apply the Premium Service settings to the selected product:
    1. Update the price to 8 and the quantity to 20.
    2. Identify to Trigger Condition, select Upon A Specific Date, and specify the date as 2019/7/1.
    3. Specify the Service Activation Date and Customer Acceptance Date both as 2019/7/1.
    4. Click Continue. The Order Overview page opens.
  3. In the Subscription Details area, click the Included Products tab to display the product for further updates.
  4. Click the  icon next to the product, then click Update Product.
  5. In the Products and Charges area, click the Advanced Option: Make the update effective before future price changes on the same rate plan link.
  6. Choose the specificUpdateDate to update the product. In this example, select a date in May during which you are going to apply the Special Service settings, and click Continue.

    SpecificUpdateDate.png

    The Order Overview page opens.

  7. Click the more details link underneath the product for updates.
  8. Apply the Special Service settings to the selected product:
    1. Update the price to 9 and the quantity to 15.
    2. Specify the Service Activation Date and Customer Acceptance Date both as 2019/5/1.
    3. Identify to Trigger Condition. In this example, select Upon Service Activation. You can select other options as well as long as the settings reflect your business requirement correctly.
    4. Click Continue. The Order Overview page opens.
  9. In the Subscription Details area, click the Order Actions tab.

    Now you can see the first Update Product order action addresses the Premium Service settings and the second addresses the Premium Service settings.

    UpdateBeforeUpdate.png

  10. Click Activate to activate the order.

Use the REST API

You can use the "Create and activate order" operation and the SpecificUpdateDate field to update a product on subscription with future-dated updates.

Prior to the Orders feature being enabled, you would have used the "Update subscription", "Amend", or "CRUD: Create amendment" operation.

To update a product on subscription with future-dated updates by creating an order:

  1. Determine the values of the following variables:

    Variable Description
    $SubscriptionNum The number of the subscription to update. For example, A-S00000001.
    $AccountNum The number of the account that will own the order. For example, A00000001.
    $RPId The ID of the rate plan to update in the subscription. For example, 2c92c0f85d7d53d3015dac494dfc5cbf.
    $ChargeNum The number of the charge to update in the rate plan. For example, C-00000020.
    $Today Today's date. For example, 2018-01-17.
    $UpdateDatePremium The Service Activation Date and Customer Acceptance Date for the Premium Service. For example, 2019-07-01.
    $UpdateDateSpecial The Service Activation Date and Customer Acceptance Date for the Special Service. For example, 2019-05-01.
  2. Use the "Create and activate order" operation to create an order under an existing account:

    Request POST /v1/orders/
    Request Body
    {
      "orderDate": "$Today",
      "existingAccountNumber": "$AccountNum",
      "subscriptions": [
        {
          "subscriptionNumber": "$SubscriptionNum",
          "orderActions": [
            {
              "type": "UpdateProduct",
              "triggerDates": [
                {
                  "triggerDate": "$Today",
                  "name": "ContractEffective"
                },
                {
                  "triggerDate": "$UpdateDatePremium",
                  "name": "ServiceActivation"
                },
                {
                  "triggerDate": "$UpdateDatePremium",
                  "name": "CustomerAcceptance"
                }
              ],
              "updateProduct": {
                "ratePlanId": "$RPId",
                "chargeUpdates": [
                  {
                    "description": null,
                    "chargeNumber": "$ChargeNum",
                    "pricing": {
                      "recurringPerUnit": {
                        "listPrice": 8,
                        "quantity": 20,
                        "priceChangeOption": null,
                        "priceIncreasePercentage": null
                      }
                    },
                    "effectiveDate": {
                      "specificTriggerDate": "$UpdateDatePremium",
                      "triggerEvent": "SpecificDate"
                    },
                    "customFields": {}
                  }
                ],
                "customFields": {}
              }
            },
            {
              "type": "UpdateProduct",
              "triggerDates": [
                {
                  "triggerDate": "$Today",
                  "name": "ContractEffective"
                },
                {
                  "triggerDate": "$UpdateDateSpecial",
                  "name": "ServiceActivation"
                },
                {
                  "triggerDate": "2$UpdateDateSpecial",
                  "name": "CustomerAcceptance"
                }
              ],
              "updateProduct": {
                "ratePlanId": "$RPId",
                "uniqueToken": null,
                "specificUpdateDate": "$UpdateDateSpecial",
                "chargeUpdates": [
                  {
                    "description": null,
                    "chargeNumber": "$ChargeNum",
                    "pricing": {
                      "recurringPerUnit": {
                        "listPrice": 9,
                        "quantity": 15,
                        "priceChangeOption": "NoChange",
                        "priceIncreasePercentage": null
                      }
                    },
                    "effectiveDate": {
                      "specificTriggerDate": "$UpdateDateSpecial",
                      "triggerEvent": "SpecificDate"
                    },
                    "billing": {
                      "billingPeriodAlignment": null
                    },
                    "customFields": {}
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    

    To create the order under a new account instead of an existing account, specify the newAccount field instead of the existingAccountNumber field.

To preview invoices for the updated subscription, use the "Preview order" operation.

Last modified

Tags

This page has no custom tags.

Classifications

(not set)