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.