Zuora Billing - RevPro Integration overview

Knowledge Center > Zuora RevPro > Zuora Billing - RevPro Integration overview

Zuora Billing - RevPro Integration overview

Zuora Billing - RevPro Integration is in Limited Availability. We are actively soliciting feedback from a small set of early adopters before releasing as generally available. 

If you are using both Zuora Billing and Zuora RevPro, the integration between two systems is likely to be a pain point to you. You need to either export the data from Zuora Billing and import it into Zuora RevPro manually for revenue recognition, or invest a significant amount of resources to build a customized integration that ingests the required data from Zuora Billing into Zuora RevPro. 

To remove the friction from reconciling two systems, Zuora delivers a customized and extensible data integration service called Zuora Billing - RevPro Integration. 

The following diagram demonstrates the architecture of Zuora Billing - RevPro Integration:

Zuora Billing - RevPro Integration architecture.png

The Data Sync service for Zuora Billing - RevPro Integration synchronizes the raw Zuora Billing objects into RevPro Pre-Staging tables. After the data is populated into Pre-Staging tables, RevPro runs the Data Transformation job to transform Zuora Billing object data into RevPro transaction lines and load them into Staging tables. Subsequently, RevPro runs the Data Collection job to collect the transaction lines ready for further revenue processing.

Data Sync service

The Data Sync service includes the following steps:

  1. Export data source objects from Zuora Billing using Data Source API and AQuA API.
  2. Import object data into RevPro Pre-Staging tables without processing.

Exporting object data  

Zuora Billing data source objects can be categorized into two groups: 

  • State object: the object that records the current state of the information. All data on a State object will be synchronized into its corresponding RevPro Pre-Staging table. 
  • Transaction object: the object that records an action or a snapshot in the system history. For a specified date range, a data source record will be synchronized if the updated timestamp falls within the specified date range. 

The following table summarizes all the extracted Zuora Billing objects, their corresponding type, and Data Sync actions:

Zuora Billing Object Object Type Data Sync Action
  • Account
  • Accounting Code
  • Contact
  • Product
  • Product Rate Plan
  • Product Rate Plan Charge
  • Product Rate Plan Charge Tier
State Synchronize all data into corresponding Pre-Staging tables in RevPro
  • Amendment
  • Invoice Item
  • Invoice
  • Invoice Item Adjustment
  • Rate Plan Charge
  • Rate Plan
  • Rate Plan Charge Tier
  • Subscription
  • Order
  • Order Action
  • Order Item
  • Order Mrr
  • Credit Memo
  • Credit Memo Item
  • Debit Memo
  • Debit Memo Item
  • Credit Balance Adjustment
Transaction Only synchronize the data created or updated within the specified data range

To initiate the Data Sync service, you must specify a date range and a list of data object names for the scope of a Data Sync job. Data Sync jobs use AQuA API in Stateless mode to load the desired Billing objects. The objects whose created or updated timestamp falls within the specified date range are extracted from Zuora Billing and synchronized into RevPro. Each data object is synchronized separately.

Importing object data 

After extracting the object data from Zuora Billing, the Data Sync service imports the data into Pre-Staging tables without processing. Each data object is synchronized in its own Pre-Staging table. For example, the Invoice object data is synchronized to the RPRO_DS_INVOICE_G table.

Custom fields are also mapped into the corresponding table of their parent objects. However, custom field names in the synchronization destination table are normalized to a range from CF_1 to CF_50. Zuora Billing - RevPro Integration supports mapping a maximum of 50 custom fields.

Data Transformation

The Data Transformation job takes the source objects in Pre-Staging tables and specified query filter as an input parameter, and outputs corresponding RevPro transaction lines in Staging tables. 

Transformation for regular lines

The following diagram describes the data transformation process for booking data:

Booking data transformation
Booking data transformation uses the query filter on Subscription, Order, or any other associated objects to determine the transformation scope. The RatePlanCharge object is used as the driving object and is joined with other objects to construct full information for transformation.

The following diagram describes the data transformation process for billing data:

Billing data transformation

Billing transformation uses the query filter on Invoice or any other associated objects to determine the scope. InvoiceItem, InvoiceItemAdjustment, CreditMemo, and DebitMemo are used as driving objects and are joined with other objects to construct full information for transformation.

Customization can be introduced at Staging after SO, INV, or CM lines are generated and before collection. 

Transformation for discount lines

Because how a discount is applied to separate charges varies, Zuora Billing - RevPro Integration introduces custom logic to handle discount booking and billing lines. The following table describes how discount lines for booking and billing data are transformed:

  Percentage Discount Fixed Amount Discount
Discount lines for booking

When processing a percentage discount RPC line, RevPro looks for the corresponding regular charge's RPC id and discount booked value by looking up with the discount's RPC id from the discount booking metrics table on the id field.

If found, generate the discount SO line by using the information from the regular RPC and discount RPC. The discount SO line id is concatenated to:

Reg_RPC_original_id.Reg_RPC_segment.Disc_RPC_original_id.Disc_RPC_segment

Additionally:

  • SO start date and end date should use regular charge’s start date and end date.
  • List price should always be zero.
  • Sequence number should concatenate the regular charge one with the discount charge one in the following format: Reg_RPC.version||Disc_RPC.version||Subscription.version||Disc_RPC.updated_date

When processing fixed-amount discount SO lines:
  • List price should be set to zero.
  • Sell price should be derived from the associated “RatePlanChargeTier.DiscountAmount”.
In any other ways, it is processed the same as regular charges.
 

Discount lines for billing

When processing a discount invoice item of a percentage discount, RevPro searches the regular charge’s RPC id by looking for the appliedToInvoiceItemId field, and traverse to the regular charge’s invoice item. For CreditMemo or DebitMemo, RevPro looks at Invoice_Item_Id field instead of the appliedToInvoiceItemId field. 

After the regular charge’s RPC id is located, the SO line id is constructed in the following format:

Reg_RPC_original_id.Reg_RPC_segment.Disc_RPC_original_id.Disc_RPC_segment

When processing an InvoiceItemAdjustment, Credit Memo, or Debit Memo, if the applied-to invoice item (SourceId in IIA, AppliedToItemId in CM or DM item) is a discount invoice item, the rules described above are also applicable.

Discount billing lines of a fixed-amount discount are processed the same as regular billing lines. 

Data Collection

Similar to the integration with other upstream systems, you can run a Data Collection program to collect the transaction lines in Staging tables into RevPro for further revenue processing. See Schedule Jobs to learn how to schedule a job in RevPro.

Last modified

Tags

This page has no custom tags.

Classifications

(not set)