Welcome to Zuora Product Documentation

Explore our rich library of product information

Automate on-demand sync for quotes

This article presents a custom sample code that triggers an On-Demand Sync on a Zuora account after a quote is sent to Zuora.

When your user sends a quote to Zuora, Zuora creates a subscription and populate both Zuora Subscription ID and Zuora Account ID into the Quote object. You can then automatically trigger an On-demand Sync on the Zuora account so that the user can see the new subscription on the Account Detail page in Zuora Quotes.

To add the sample trigger in the Quote object:

  1. Navigate to Setup > App Setup > Create > Objects .
  2. Click Quotes in the Custom Objects list.
  3. In the Triggers section, click New .
  4. Copy the following code for the QuoteOnDemandSyncTrigger trigger, into the Apex Trigger window, then click Save .
trigger QuoteOnDemandSyncTrigger on Quote__c ( after update ) 
{
  if ( Trigger.isUpdate && Trigger.isAfter )
  {
    List<zqu__Quote__c> quotes = Trigger.new; 
    List<zqu__Quote__c> oldQuotes = Trigger.old; 
    Map<Id, String> idSubMap = new Map<Id, String>();
    for ( zqu__Quote__c oldQuote : oldQuotes )
    {
      idSubMap.put( oldQuote.id, oldQuote.zqu__ZuoraSubscriptionID__c );
    }
    Set<String> zuoraAccountIdSet = new Set<String>();
    for ( zqu__Quote__c quote : quotes )
    {
      String oldSubscriptionId = idSubMap.get( quote.id );
      String newSubscriptionId = quote.zqu__ZuoraSubscriptionID__c; 
      System.debug( 'Old subscription id = ' + oldSubscriptionId + ', newSubscripitonId = ' + newSubscriptionId );
      if ( oldSubscriptionId != newSubscriptionId )
      {
        zuoraAccountIdSet.add( quote.zqu__ZuoraAccountID__c);
      }
    }
    if ( zuoraAccountIdSet.size() > 0 )
    {
      Zuora.OnDemandSyncManager syncManager = new Zuora.OnDemandSyncManager();
      syncManager.syncZuoraObjectIdSet = zuoraAccountIdSet; 
      syncManager.sendRequest();
    }
  }
}

After the Quote trigger is updated, test the trigger as below.

  1. Create a new quote and send it to Zuora. This creates a subscription in Z-Billing.

  2. After a few minutes, return to the opportunity and click the Account Name you used for the quote above. On the Account detail page, you should see a new subscription in the Subscriptions related list. This subscription is a result of the On-demand Sync invoked by the quote trigger.