Zuora plugins

Introduction

Zuora is a subscription billing and finance solution. It is designed to automate recurring billing, collections, quoting, revenue recognition, and subscription metrics.

User Storie(s)

  • As a pipeline developer, I would like to pull data from an object in Zuora in a streaming pipeline, so that I can transform, enrich and synthesize it in a data pipeline.
  • As a pipeline developer, I would like to post data to an object in Zuora in a batch or streaming pipeline, so that I can update Zuora with my enriched data.
  • As a pipeline developer, I would like to pull data from an object in Zuora in a batch pipeline, so that I can transform, enrich and synthesize it in a data pipeline.
  • As a pipeline developer, for both batch and streaming sources, I would like the schema to be auto-populated based on the selected objects.
  • As a pipeline developer, for all interactions with Zuora, I would like Zuora API limits to be handled by the framework, so that I do not have to worry about them. (https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits)

Plugin Type

  • Batch Source
  • Batch Sink 
  • Real-time Source
  • Real-time Sink
  • Action
  • Post-Run Action
  • Aggregate
  • Join
  • Spark Model
  • Spark Compute

Configurables

Batch source - single object/multi object

Should automatically populate schema for the selected object

SectionUser Facing NameTypeDescriptionOptional?DefaultConstraints
AuthenticationAuthentication Typeradio buttonThe Authentication type to use, either OAuth2 or Basic. Defaults to Basic.NoBasic
UsernameStringThe Zuora ID to use to make request. Only required when authentication type is Basic.Yes

PasswordpasswordThe Zuora password. Only required when authentication type is Basic.Yes

Client IdStringThe Client ID of the OAuth2 client. Only required when Authentication Type is OAuth2Yes

Client SecretpasswordThe Client Secret that was displayed when the OAuth2 client was created. Only required when Authentication Type is OAuth2Yes

REST API EndpointString

The one of Zuora API endpoint to use:

No

BasicObject(s) to pullselectThe Zuora object to pull from the list at https://www.zuora.com/developer/api-reference/#section/Zuora-Object-ModelNoAccount


Streaming source

Should automatically populate schema for the selected object

SectionUser Facing NameTypeDescriptionOptional?DefaultConstraints
AuthenticationAuthentication Typeradio buttonThe Authentication type to use, either OAuth2 or Password or Authorization Cookie. Defaults to OAuth2.NoOAuth2
Access Key IDStringThe Zuora ID to use to make request. Only required when authentication type is password.Yes

Secret KeypasswordThe Zuora password. Only required when authentication type is password.Yes

Client IdStringThe Client ID of the OAuth2 client. Only required when Authentication Type is OAuth2Yes

Client SecretpasswordThe Client Secret that was displayed when the OAuth2 client was created. Only required when Authentication Type is OAuth2Yes

Authorization CookiepasswordThe authorization cookie to use for session authentication. Only required when authentication type is Authorization Cookie.Yes

BasicObject to pullselectThe Zuora object to pull from the list at https://www.zuora.com/developer/api-reference/#section/Zuora-Object-ModelNoAccount

Batch sink

Writes data to the selected object in Zuora

User Facing NameTypeDescriptionOptional?DefaultConstraints
Authentication Typeradio buttonThe Authentication type to use, either OAuth2 or Password or Authorization Cookie. Defaults to OAuth2.NoOAuth2
Access Key IDStringThe Zuora ID to use to make request. Only required when authentication type is password.Yes

Secret KeypasswordThe Zuora password. Only required when authentication type is password.Yes

Client IdStringThe Client ID of the OAuth2 client. Only required when Authentication Type is OAuth2Yes

Client SecretpasswordThe Client Secret that was displayed when the OAuth2 client was created. Only required when Authentication Type is OAuth2Yes

Authorization CookiepasswordThe authorization cookie to use for session authentication. Only required when authentication type is Authorization Cookie.Yes

Object to write toselectThe Zuora objects to pull from the list at https://www.zuora.com/developer/api-reference/#section/Zuora-Object-ModelNoAccount

Design / Implementation Tips

 As the reference were used Zuora API version 230.0 of swagger definition. The definition could be obtained from the link in the article or be downloaded directly.

zuora/src location contains README.md file with addition information about auto-generated Zuora object definitions from the swagger file


API documentation: https://www.zuora.com/developer/api-reference/


Authorization

Plugin supporting Basic and OAuth2 authorization. OAuth2 method require user to enable such functionality in Zuora configuration or follow the instruction in the documentation: 

https://knowledgecenter.zuora.com/CF_Users_and_Administrators/A_Administrator_Settings/Manage_Users; Section "Create an OAuth Client for a User"


Rate limiting

Zuora API have an request rate limiting for the object. The API requester have integrated way to retry over time to fetch wait for penalty time.

Documentation: https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Policies/Concurrent_Request_Limits

Approach(s)

Create a module zuora plugin in zuora project. Add Zuora objects with their deserialization from API and transformation to structured records. 

Test Case(s)

TODO

Sample Pipeline

TODO



Table of Contents

Checklist

  • User stories documented 
  • User stories reviewed 
  • Design documented 
  • Design reviewed 
  • Feature merged 
  • Examples and guides 
  • Integration tests 
  • Documentation for feature 
  • Short video demonstrating the feature