Invoke an On-Demand Sync
Overview
This topic includes sample Apex code snippets that invoke On-demand Sync sessions through the OnDemandSyncManager global class.
Sync Billing Accounts with Mapped to Zuora Customer Accounts
The following code invokes the On-demand Sync for specific billing accounts that are mapped to {[z_app}} customer accounts. You pass a set of billing account IDs, 15 or 18 character Salesforce IDs.
Set<Id> billingAccountIdSet = new Set<Id>(); populateBillingAccountIdSet(); // Add the billing account IDs to the set. These billing accounts will be included in the On-demand Sync. try { Zuora.OnDemandSyncManager syncManager = new Zuora.OnDemandSyncManager(); syncManager.syncObjectType = Zuora.OnDemandSyncManager.ObjectType.BILLING_ACCOUNT; syncManager.syncObjectIdSet = billingAccountIdSet; List<Zuora.SyncResult> syncResult = syncManager.sendRequest(); } catch( Zuora.OnDemandSyncManager.OnDemandSyncException e ) { // Process On-demand Sync exception. }
Sync Billing Accounts without a Mapped Salesforce Account
The following code invokes the On-demand Sync for Zuora customer accounts that are not mapped to Salesforce billing accounts. You pass a set of Zuora customer account IDs, the 32-character ID.
This is the scenario where the corresponding Salesforce Billing Account has not been created from a Zuora account, but the Zuora account is already associated with a CRM Account ID.
Set<String> zuoraAccountIdSet = new Set<String>();populateZuoraAccountIdSet(); // Add the Zuora account IDs to the set. These Zuora accounts will be included in the On-demand Sync request. try { Zuora.OnDemandSyncManager syncManager = new Zuora.OnDemandSyncManager(); syncManager.syncObjectType = Zuora.OnDemandSyncManager.ObjectType.BILLING_ACCOUNT; syncManager.syncZuoraObjectIdSet = zuoraAccountIdSet; List<Zuora.SyncResult> syncResult = syncManager.sendRequest(); } catch( Zuora.OnDemandSyncManager.OnDemandSyncException e ) { // Process On-demand Sync exception. }
Sync ZProducts Mapped to Zuora Products
The following code invokes the On-demand Sync for ZProducts that are mapped to Zuora products in the Product Catalog. Pass a set of ZProduct IDs.
Set<Id> zProductIdSet = new Set<Id>(); populateProductIdSet(); // Add the product IDs to the set. These ZProducts will be included in the On-demand Sync request. try { Zuora.OnDemandSyncManager syncManager = new Zuora.OnDemandSyncManager(); syncManager.syncObjectType = Zuora.OnDemandSyncManager.ObjectType.ZPRODUCT; syncManager.syncObjectIdSet = zProductIdSet; List<Zuora.SyncResult> syncResult = syncManager.sendRequest(); } catch( Zuora.OnDemandSyncManager.OnDemandSyncException e ) { // If Zuora Quotes is not installed, an OnDemandSyncException will be thrown indicating the error. }
Sync a Zuora Product Not Mapped to a Zuora Product in Zuora Quotes
The following code invokes the On-demand Sync for Zuora Products in the Product Catalog that are not mapped to a ZProducts. Pass a set of Zuora Product IDs (the 32-character ID). After the sync, new ZProducts will be created in Salesforce.
Set<String> zuoraProductIdSet = new Set<String>(); populateZuoraProductIdSet(); // Add the product IDs to the set. These ZProducts will be included in the On-demand Sync request. try { Zuora.OnDemandSyncManager syncManager = new Zuora.OnDemandSyncManager(); syncManager.syncObjectType = Zuora.OnDemandSyncManager.ObjectType.ZPRODUCT; syncManager.syncZuoraObjectIdSet = zuoraProductIdSet; List<Zuora.SyncResult> syncResult = syncManager.sendRequest(); } catch( Zuora.OnDemandSyncManager.OnDemandSyncException e ) { // If Zuora Quotes is not installed, an OnDemandSyncException will be thrown indicating the error. }