Synchronized Data Extracts

Overview

Synchronized data extracts (SDE) allow fetching the consumer’s latest financial data from the Envestnet | Yodlee financial aggregation platform when it updates the consumer’s accounts.

Customers who store consumer data like account details and transactions in their local databases (i.e., instead of using Yodlee APIs in real time) should use synchronized data extracts. This enables customers to keep their local databases in sync with the latest data present in the Envestnet | Yodlee financial data platform.

 Customers can use SDE in two ways:

  1. Using webhooks —extract data after being notified of changes.
  2. Using polling (without webhooks)—extract data after checking for changes by polling. 

Let’s look into each of these:

  1. Using webhooks

This is the recommended approach. There is a one-time activity to set up webhooks for this event and then you are all set to listen to notifications and retrieve the user’s updated details.

Steps to implement webhooks

  1. Authenticate to the API using the cobrand credentials and obtain a cobSession token. Use POST /cobrand/login.
  2. Use your existing cobSession to subscribe to the DATA_UPDATES event, using the subscribe event This is a one-time activity.
  3. Once you have subscribed to the DATA_UPDATES event, you need to listen to the event notification from Envestnet | Yodlee at the provided callback URL.
  4. When you receive a notification from Envestnet | Yodlee, you need to retrieve the users’ data using the GET/dataExtracts/userData API. 
  1. Using polling

If you do not want to implement webhooks you can use the polling approach.

Steps to implement polling

  1. Authenticate to the API using the cobrand credentials and obtain a cobSession token. Use POST /cobrand/login.
  2. Use your existing cobSession token to invoke GET /dataExtracts/events API to find out which user accounts were updated for a given time frame.
  3. Retrieve the user’s data using GET/dataExtracts/userData API.

Get User Data Service—Payload Processing Recommendations

The payload of an entity in the get user data service response is the same as that of your retrieval services documented on the  API Reference page.

The only difference between the get user data payload and the respective retrieval service payload is the isDeleted attribute. Deleted records of an entity are indicated by the isDeleted attribute set to true in the get user data service. For example, the account information provided in the get user data service is same as that of the get account detail service. 

Process the get user data payload in the following sequence:

  • Process provider accounts information
  • Process accounts information
  • After processing provider accounts and accounts, transactions and holdings can be processed in parallel.

Your payload processing and database updates should rely on the following logic:

Provider Accounts Processing 

  • The providerAccountId is a unique identifier that can be used to perform add and update operations.
  • The isDeleted flag will be returned as true for deleted records. Using the isDeleted flag, the providerAccounts that are deleted from the Yodlee database can be identified and then be deleted from your database. refreshInfo will not be provided in the providerAccount response for the deleted account.
  • Ensure that you delete all the child records such as transactions, holdings, and accounts associated with the deleted providerAccount.

 Accounts Processing

  • The accountId and providerAccountId together will be the unique identifier of an account that can be used to perform add and update operations.
  • The isDeleted flag will be returned as true for deleted records. Using the isDeleted flag, the accounts that are deleted from the Envestnet | Yodlee database can be identified and then be deleted from your database. Ensure that you delete the transactions and holdings associated with the deleted accountId.

Transactions Processing

  • The transactionId for an aggregated account will be unique. The add and update operations can be performed depending on the transactionId and isManual fields.
  • The isDeleted flag will be returned as true for deleted records. Using the isDeleted flag, the transactions that are deleted from the Yodlee database can be identified and then be deleted from your database.
  • During the update account process, the pending transactions are deleted from the Yodlee database and new transactions are created. The deleted transaction and the new transaction will be provided in the data extracts response.

Holdings Processing

  • The holdingId is the unique identifier of a holding. Since holdings are always updated during the investment or insurance account refreshes, only the active holding records will be provided in the data extracts response. Deleted records will not be provided.
  • We recommend that you update, insert, and delete by comparing the provided holdings with your database records.

Actions Triggering Notifications

Actions that trigger data extracts notifications are as follows:

  • A successful or failed action to add a provider account through API or add an account 
through FastLink.
  • A successful or failed action to update/refresh a provider account through API, edit credentials through FastLink, refresh an account through FastLink, or refresh an account through an application.
  • Deleting a provider account through API or an application.
  • Updating details of an aggregated account or a manual account through API or an 
application, for example, updating the account nickname.
  • Adding a manual account through API or FastLink.
  • Deleting an aggregated account or a manual account through API or an application.
  • Updating an aggregated transaction through API or an application, for example, updating the transaction category.
  • Daily Cache refreshes
  • Reconciliation process