Giter VIP home page Giter VIP logo

capstone2023-zuora-salesforce-integration's Introduction

CofC Capstone Project

Logo

Zuora - Salesforce Integration

College of Charleston
Computer Science Capstone 2023

Watch the video

Table of Contents
  1. About The Project
  2. Approach
  3. Acknowledgments

About The Project

This is a capstone project at the College of Charleston in partnership with world-class payment management company Zuora. Our team was tasked to work with our client, Wes Spears, at Zuora on a project they chose. In order to mimic a real-world, industry-style project, our team implemented the SCRUM framework.

The purpose of this project was to develop an API to sync account and contact information between Zuora and Salesforce. This will be able to save developers time and save the business money by being able to sync information efficiently and quickly.

The Team

This project team was comprised of four College of Charleston students. Each team member served as Scrum Master for at least one sprint.

  • Henry Smith
  • Sydney Camenzuli
  • Nathan Everette
  • West Harrell

Client and Zuora contact: Wes Spears (Zuora)
Professor: Dr. Ellie Lovellette

Approach

This solution is designed to automatically capture updates from a Salesforce Account or Contact sObject and apply those changes to the equivalent zObject in Zuora. The process flow will vary slightly depending on which type of sObject is updated.

Once an Account or Contact is updated in Salesforce, a bespoke Apex trigger will fire on that sObject. The trigger will then take the updated information and build a map of strings and objects for each equivalent field between Salesforce and Zuora for that type of sObject (see below for a complete map of equivalent fields). It is worth noting that the UpdateContactTrigger builds an additional map of strings and objects to store mailing address information.

Once the trigger has finished gathering and storing all the sObject’s information, it will check to see if the custom field ‘ZuoraID’ is empty. If this field is empty, then the process will end here, as there is no given Zuora ID for an equivalent zObject to be updated. If a Zuora ID is given, then the trigger will serialize the completed map of strings and objects into a JSON. The trigger will then pass this JSON, along with the Zuora ID, to a bespoke helper class, depending on the type of sObject that was updated.

The helper class will then take the given JSON and make a Zuora REST API call to update the equivalent zObject, matched via the given Zuora ID from Salesforce. The helper class also takes care of authentication and utilizes OAuth 2.0. This uses a separate method within the helper class to generate a token using the Client ID and Client Secret of the user’s Zuora sandbox’s OAuth 2.0 Provider.

Design Assumptions

  • The user has access to both Salesforce and Zuora as well as their respective sandbox development environments
  • The sObject already has an equivalent zObject
  • The user has a method of obtaining the Zuora ID for each Account and Contact sObject they wish to sync (i.e. using a Data Query)

Prerequisites

  • The triggers ‘UpdateAccountTrigger’ and ‘UpdateContactTrigger’ have been added to the Salesforce workspace
  • The classes ‘UpdateAccountHelper’ and ‘UpdateContactHelper’ have been added to the Salesforce workspace
  • The aforementioned classes and triggers have been configured correctly (more details below)
  • The Salesforce Account and Contact sObjects have a custom field ‘zID’ for storing its Zuora ID
  • The user’s Salesforce workspace has a custom ‘ZuoraSyncError’ sObject
  • The user’s Zuora sandbox already has an OAuth 2.0 Provider set up
  • The user has the aforementioned OAuth 2.0 Provider’s Client ID and Client Secret

Acknowledgments

(back to top)

capstone2023-zuora-salesforce-integration's People

Contributors

everettens avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.