Integrating Yardi System and Salesforce using MuleSoft API-Led Connectivity Approach
(5 mins read)
- What is Yardi System:
Yardi is a software that makes applications for all sizes of property management and real estate companies. The company makes software suites for property management, marketing, commercial applications, senior living, and investments. Yardi’s software consists of cloud-based tools that work on both desktop and mobile platforms.
Yardi’s main offering of property management software comes in two suites: Yardi Breeze, for small to medium-sized property management companies, and Yardi Voyager(web-based application), for large property management companies. Breeze focuses on single-family homes and multifamily properties. Voyager focuses on commercial property management. Both include tools for accounting, operations, and ancillary processes.
- What is Salesforce:
Salesforce is a cloud computing service as a software (SaaS) company that specializes in customer relationship management (CRM). Salesforce’s services allow businesses to use cloud technology to better connect with customers, partners, and potential customers. The software has become the number one for customer success and helps businesses track customer activity, market to customers, and many more services.
- What is MuleSoft:
MuleSoft is a middleware and iPaaS solution. The Mule ESB is a middleware solution, and with the influence of CloudHub, MuleSoft becomes an iPaaS solution. This, combined with MuleSoft’s Java-based framework, makes the Anypoint Platform not only extremely flexible but also scalable.
- The Goal:
Yardi system contains details of properties and the associated details of attributes like tenant, lease, unit, resident, price etc which are logically linked together to have a property management system. On the other hand, Salesforce helps to build the customer-facing relations which contain details like properties, rehabs, renewals, Listings, Rent Roll etc.
Within a business process, there are times when it is required to integrate data between Salesforce and Yardi to keep both the system in sync for various purposes.
1) Details of the newly onboarded property or update to existing property need to be added/updated to the various table in Yardi databases.
2) Creating leases in Salesforce for all active properties in Yardi.
Both the examples mentioned above require a complex logic involved while integrating the data between the systems keeping Transactionality and business needs in mind.
Use of MuleSoft batch integration for handling large quantities of data, engineering near real-time data integrations, and/or use of API-Led Connectivity approach for better governance, maintainability, scalability, and shared resources, can achieve above goals.
- A Scenario:
Let us consider the below scenario and implementation the same using MuleSoft’s API-Led connectivity approach.
Scenario: The renewal(renewal of leases) object in Salesforce needs to be updated with below details from Yardi, which are scattered across various tables in the Yardi database.
1) Pet rent
2) Pool fee amount
3) Amenity fee amount
4) Master policy
5) Policy create date
6) Policy effective date
7) Policy expiry date
8) Name of the insurer
9) Pet notes
Mulesoft as an integration tool needs to pull the data from Yardi and update the details in Salesforce periodically. Also, there is a need for integrating the same data in real-time by sending a get request to MuleSoft API for a single renewal record in salesforce.
Solution: We will take a hybrid approach here using the capabilities of API-Led connectivity and a job scheduler to accomplish the goal
step1: Create a system API namely org-sfdc-system-api to interact with Salesforce.
step2: Create a system API namely org-yardi-system-api to interact with Yardi system(A database).
step3: Create a system API namely org-internal-system-api. This API keeps track of the transaction between system APIs where ever it is needed. This system can also work as a place for keeping historical records of certain transactions or providing a cache like environment (where the data can not be filtered from the source)
step4: Create a process layer namely org-yardi-process-api which does integrate the data between org-yardi-system-api and org-internal-system-api.
step5: Create a process layer namely org-internal-process-api which does integrate the data between org-internal-system-api and org-sfdc-system-api.
Step 4 and 5 will have a scheduler in place to run the job.
step6: Create an experience layer namely org-ms-exp-api. This API will give the option for Salesforce to get the details of renewals details in realtime.
Below is the architectural approach to the solutions mentioned above –
- Links: Below are the links to know more about the systems and architectural pattern involved –