Skip to content

Default Reporting Application (DRA)

Verified against source (4)

  • wiki/Default-Reporting-Application.md
  • wiki/DR-Configuration.md
  • fanniemae/legacy.events.ini
  • fanniemae/postman.dra.json

This view is for law firm IT teams and case management vendors who send DRA events automatically, by sFTP or API. Both channels accept the same legacy Fannie Mae events content as the web upload, and every submission becomes an import file you can follow in the web interface.

Environment Web and API sFTP
UAT https://uatfannie.quandis.io sftpfannie.quandis.io (UAT account)
Production https://fannie.quandis.io sftpfannie.quandis.io (production account)

One sFTP host serves both environments. Which environment a file goes to depends on the account you connect with.

Automation runs under a dedicated automation account, bound to your firm. DRA knows which firm sent a file from the account that sent it.

Email Fannie Mae’s DRA team at dra_support@fanniemae.com with:

  • Your firm name.
  • Two main points of contact for the integration: first and last name, direct phone number, and email for each.
  • The ways you plan to submit: sFTP, API, spreadsheet upload, or direct entry.
  • The automation user name you want, such as integrations@examplelawfirm.com.
  • For sFTP: the IP address ranges, in CIDR notation, that you will connect from. Check them with a CIDR calculator before you send them.
  • For sFTP (recommended): a 2048-bit SSH public key to use instead of a password.

For UAT access, contact Quandis at fannie.support@quandis.com.

Once you have a user account, contact fannie.support@quandis.com to set up sFTP. Quandis creates two accounts on the sFTP server:

Account Example name
UAT uat.integrations@examplelawfirm.com
Production integrations@examplelawfirm.com

Each account authenticates with an SSH key pair (recommended) or a password:

  • SSH key. Your IT team generates a 2048-bit key pair, sends DRA the public key, and keeps the private key to authenticate. Generate the pair yourself: Quandis security policy prohibits keeping private keys generated on your behalf.
  • Password. If you prefer, Quandis generates a password for the account.

Connections are allowed only from the IP ranges you registered, for example 203.0.113.45/32 (a single address) or 198.51.100.0/24 (a block). The server is an AWS Transfer Family server, listening on port 22.

Each account has its own home directory, so firms can’t see or overwrite each other’s files. DRA watches the directory, queues each matching file for import, and then removes it from the sFTP site. The file and its results stay available in the web interface under Landing Pages > Default Reporting > Import Files.

Files delivered by sFTP or uploaded in the web interface must:

  • be an Excel workbook (.xlsx) or a delimited text file (.csv or .txt), and
  • contain Events in the file name. The match is case-sensitive.
File name Accepted?
Events.xlsx Yes
examplefirm.Events.xlsx Yes
examplefirm.Events.2026-10-01.csv Yes
EX01-Events_P01.03.1.txt Yes
examplefirm.xlsx No: no Events in the name
examplefirm.events.xlsx No: events is lowercase
examplefirm.Events.xls No: .xls is not the Excel .xlsx format

For .csv and .txt files, DRA detects the delimiter, so pipe-delimited files from the legacy system and comma-delimited files both work. Unique names aren’t required, but a date or time stamp makes your history easier to read.

DRA reads Fannie Mae’s legacy default reporting layout: 110 columns in a fixed order, defined in legacy.events.ini. Each event is one row with record type EVENT. Legacy HEADER and FOOTER rows are accepted but optional, and delimited rows carry no column-name header.

Columns that matter most:

# Column Notes
1 Record Type EVENT
2 Provider Code Your firm’s Fannie Mae provider code. Required.
3 Business Event Code The event, for example E0130 (foreclosure referral package received) or E0290 (bankruptcy referral package received).
9 Event Actual Date time When the event happened. DRA derives case status from these dates.
15 Delay Type Code For delay events.
20 Investor Loan Number Identifier The Fannie Mae loan number. DRA matches it to Fannie Mae’s loan data.
22–25 Delay Actual Start Date, Delay Projected End Date, Delay End Reason Type, Delay Details Text For delay events.
53–55 Assigned Foreclosure Attorney Code, Foreclosure Attorney File Identifier, Foreclosure Method Type Your file number identifies the foreclosure.
75, 77 Assigned Bankruptcy Attorney Code, Bankruptcy Case Number ID The case number identifies the bankruptcy.

DRA groups events into a foreclosure by provider code, loan, and attorney file number, and into a bankruptcy by provider code, loan, and bankruptcy case number. Delay events attach to the loan.

Servicer fields (servicer code, name, and loan number, investor servicer ID) and property location fields are stored on the event, but the loan summary shows Fannie Mae’s values from its own data feed.

  • Order within a file doesn’t matter, except for repeats: case status comes from event dates, not row order.
  • Repeated events collapse. If the same event is reported for the same loan more than once in one file, only the last row is kept.
  • Empty files aren’t listed. A file with no EVENT rows doesn’t appear on the Import Files tab.
  • Send as often as you like. One event per file is fine; processing is near-real time.

POST events content to:

/api/import/legacyevents?PreTransform_FileName={FileName}

PreTransform_FileName names the submission, and its extension tells DRA how to read the content: .csv for delimited rows, .xlsx for a workbook. Authenticate as your automation account; the sample Postman collection in the Fannie Mae integration repository uses HTTP Basic authentication with the account’s user name and password. For QBO API authentication in general, see Authenticating API calls.

Send rows in the legacy column order. This example is cut short after column 20; a real row continues through all 110 columns, leaving the ones you don’t report empty.

POST https://uatfannie.quandis.io/api/import/legacyevents?PreTransform_FileName=examplefirm.Events.2026-10-01.csv
Content-Type: text/plain; charset=UTF-8
EVENT,P009999,E0130,Foreclosure Referral Package received by Attorney,SS00000,P008888,Example Servicer LLC,0000012345,2026-09-15T10:30:00,2026-09-15T10:30:00,2026-09-15T10:30:00,EX-0001,EXAMPLE,,,,,P000000,Fannie Mae,9999999001,…

All values above are placeholders.

You can also send events as XML: one <Body> element per event, inside a single root element.

POST https://uatfannie.quandis.io/api/import/legacyevents?PreTransform_FileName={FileName}
Content-Type: text/plain; charset=UTF-8
<Content>
<Body>
<RecordType>EVENT</RecordType>
<ProviderCode>P009999</ProviderCode>
<BusinessEventCode>E0290</BusinessEventCode>
<BusinessEventName/>
<ServicerName>Example Servicer LLC</ServicerName>
<EventActualDate>2026-09-15T00:00:00</EventActualDate>
<InvestorName>Fannie Mae</InvestorName>
<InvestorLoanNumberID>9999999001</InvestorLoanNumberID>
<AssignedBKAttorneyCode>P009999</AssignedBKAttorneyCode>
<BKCaseNumberID>26-00000</BKCaseNumberID>
<BKChapterTypeCode>Chapter13</BKChapterTypeCode>
<AssignedBKAttorneyName>Example Law Firm, PLLC</AssignedBKAttorneyName>
<!-- Abbreviated: include every element in the legacy specification. -->
</Body>
<Body>…</Body>
</Content>
  • The root and <Body> element names don’t matter, but the element names inside each <Body> must match the legacy specification exactly. The complete element list is in the XML submission section of the DRA wiki.
  • Include every element, even when it is empty.
  • Don’t send legacy Header or Footer elements.

A successful submission returns the import file it created:

<ImportFileItem>
<ImportFile>examplefirm.Events.2026-10-01.csv</ImportFile>
<ImportFileID>12345</ImportFileID>
</ImportFileItem>

The events are then processed from the queue. Keep the ImportFileID to check the results.

GET /api/importlog/search?Output=Xml&ImportFileID=12345
GET /api/importlog/search?Output=Xml&ImportFileID=12345&SqlFilters=Failed

The first call returns the log for every row; SqlFilters=Failed returns only the rows that failed. If your account can’t read import logs through the API yet, ask fannie.support@quandis.com to enable it.