Integrating to Snapdocs eVault
Introduction
There are many secondary lenders and systems which want to automate the eVault back and forth for any loans that contain an eNote. Snapdocs eVault APIs support a robust integration for that automation. Below is a breakdown of the workflows and suggested Architecture details that should help you as you design your integration. Your integration to the Snapdocs eVault can include any of the below workflows.
Workflows
eNote auto-validation
The eNote auto-validation takes data from your system and validates against the data in the eNote. When doing an API integration you can either submit data in bulk (csv), similar to the flow offered on the UI, or submit data one eNote (MIN) at a time. For bulk data submission, you would rely solely on webhook events to receive the result. The diagrams below show the flow for submitting data one eNote at at time (synchronous flow)
Auto Validation Workflow - eNote already arrived
When the eNote is already in the eVault, the auto-validation is triggered instantly and the results will be in the synchronous response. You will still receive a webook event as an event is triggered each time a validation is complete. If the validation fail, you can re-submit new data and run the validation again.
sequenceDiagram participant EVaultIntegration as eVault Integration participant SnapdocsEVault as Snapdocs eVault participant MERS MERS->>SnapdocsEVault: eNote eDelivery SnapdocsEVault-->>EVaultIntegration: webhook: edelivery accepted distribution EVaultIntegration->>SnapdocsEVault: submit eNote data SnapdocsEVault->>EVaultIntegration: synchronous response with results SnapdocsEVault-->>EVaultIntegration: webhook: auto validation result (passed / failed) EVaultIntegration->>SnapdocsEVault: get auto validation result details opt After validation failure EVaultIntegration ->> SnapdocsEVault: submit updated eNote data SnapdocsEVault->>EVaultIntegration: synchronous response with result SnapdocsEVault-->>EVaultIntegration: webhook: auto validation result (cleared / failed) EVaultIntegration->>SnapdocsEVault: get auto validation result details end
Auto Validation Workflow - eNote arrives after request
When the eNote data is submitted before the eNote has been eDelivered to the eVault, we save the data and the auto-validation is automatically triggered upon arrival of the eNote in the eVault. A webhook event will be sent when the auto-validation is complete. If the validation fail, you can re-submit new data and run the validation again.
sequenceDiagram participant EVaultIntegration as eVault Integration participant SnapdocsEVault as Snapdocs eVault participant MERS EVaultIntegration->>SnapdocsEVault: submit eNote data SnapdocsEVault->>EVaultIntegration: synchronous response without result MERS->>SnapdocsEVault: eNote eDelivery SnapdocsEVault-->>EVaultIntegration: webhook: edelivery accepted distribution SnapdocsEVault->>SnapdocsEVault: run eNote validation SnapdocsEVault-->>EVaultIntegration: webhook: auto validation result (passed / failed) EVaultIntegration->>SnapdocsEVault: get auto validation result details opt After validation failure EVaultIntegration ->> SnapdocsEVault: submit updated eNote data SnapdocsEVault->>EVaultIntegration: synchronous response SnapdocsEVault-->>EVaultIntegration: webhook: auto validation result (cleared / failed) EVaultIntegration->>SnapdocsEVault: get auto validation result details end
eNote Transfer and eDelivery
Incoming Transfer and eDelivery
Transfer workflow
This sequence of events is triggered when a partner initiate a transfer of rights to your MERS Org ID.
sequenceDiagram participant EVaultIntegration as eVault Integration participant SnapdocsEVault as Snapdocs eVault participant MERS MERS->>SnapdocsEVault: transfer received SnapdocsEVault-->>EVaultIntegration: webhook: transfer received SnapdocsEVault->>MERS: transfer accepted MERS->>MERS: all parties accept transfer MERS->>SnapdocsEVault:transfer complete SnapdocsEVault-->>EVaultIntegration: webhook: transfer accepted
eDelivery workflow
This sequence of events is triggered when a partner sends a copy of the note to your eVault. This is a separate action from the actual transfer or rights event though those two actions are usually performed simultaneously. There is no guaranteed order between the transfer and the eDelivery events for a given MIN.
sequenceDiagram participant EVaultIntegration as eVault Integration participant SnapdocsEVault as Snapdocs eVault participant MERS MERS->>SnapdocsEVault: edelivery initiated SnapdocsEVault-->>EVaultIntegration: webhook: edelivery received SnapdocsEVault->>MERS: confirm eDelivery SnapdocsEVault-->>EVaultIntegration: webhook: edelivery accepted confirmation MERS->>SnapdocsEVault: deliver eNote file SnapdocsEVault->>MERS: accept edelivery SnapdocsEVault->>SnapdocsEVault: eNote saved to eVault SnapdocsEVault-->>EVaultIntegration: webhook: edelivery accepted distribution
Outgoing Transfer and eDelivery
This sequence of events is triggered when a transfer of rights and an eNote eDelivery is initiated by you to one of your partners. When a transfer is initiated, an eDelivery to the partners involved in the transfer is triggered automatically by the eVault unless specified otherwise. However, those are two separate actions to the MERS eRegistry. This flow diagram shows the happy path for outgoing transfer + eDelivery (no failure). There will be as many eDeliveries submitted to MERS as there are unique partners involved in the transfer or rights.
sequenceDiagram participant EVaultIntegration as eVault Integration participant SnapdocsEVault as Snapdocs eVault participant MERS EVaultIntegration->>SnapdocsEVault: initiate transfer + eDelivery SnapdocsEVault->>MERS: submit transfer SnapdocsEVault-->EVaultIntegration: webhook: transfer submitted SnapdocsEVault->>MERS: submit edelivery SnapdocsEVault-->EVaultIntegration: webhook: edelivery submitted MERS->>MERS: all participant accept the transfer MERS->>SnapdocsEVault: transfer accepted SnapdocsEVault-->EVaultIntegration: webhook: transfer accepted MERS->>MERS: recipient accepted edelivery MERS->>SnapdocsEVault: edelivery accepted confirmation SnapdocsEVault-->EVaultIntegration: webhook: edelivery accepted confirmation MERS->>MERS: recipitent acknowledge reception of the enote file MERS->>SnapdocsEVault: edelivery accepted distribution SnapdocsEVault-->EVaultIntegration: webhook: edelivery accepted distribution
Note that the "accepted distribution" step in MERS is optional, hence receiving edelivery_accepted_distribution webhook event is not guaranteed.
Snapdocs eVault event Handling
If you look at the below architecture you can see that we suggest the listener listens for the eVault events, and offloads the work to appropriate handlers. Each handler would execute the updates in your Secondary System that makes sense for the event type, including making follow-on API calls to the eVault to gather more eNote details.
Architecture Diagram
The below diagram shows how Snapdocs believes an integration between Secondary Loan Systems and the Snapdocs eVault should be built. The interactions are bidirectional, and the integration supports connections to submit to Snapdocs eVault in the case of Auto Validation requests or Transfers as well as listens for events such as the eDelivery and Transfer arrivals or Auto Validation results.
Snapdocs recommends separating out the successful arrival from an event at a listener endpoint, sending the 200 response acknowledgement. The processing of that message can be managed by various handler snippets that will react appropriately depending on the event type, the specifics of rights holder expectations of your secondary system, and the capabilities of your backend system to accept data change.