Word on the Street

Employee Performance Criteria

posted Jan 2, 2014, 12:24 PM by Eric Patrick

Just so we can start the New Year off on the right foot:

Performance Details

Performance Factors

Far Excedes Job Requirements

Excedes Job Requirements

Meets Job Requirements

Needs Some Improvement

Does Not Meet Minium Requirements


Leaps tall buildings with a single bound

Must take a running start to leap tall buildings

Can only leap over a short building

Crashes into buildings when attempting to jump over them

Cannot recognise buildings, much less jump


Faster than a speeding bullet

As fast as a speeding bullet

Bot quite as fast as a speeding bullet

Would you belive a slow bullet?

Wounds self with bullent when attempting to shoot gun.


Stronger than a locomotive

Stronger than a bull elephant

Stronger than a bull

Shoots the bull

Smells like a bull





Walks on water consistently

Walks on water in emergencies

Washes with water

Drinks water

Passes water in emergencies




Talks with god

Talks with the angels

Talks to himself

Argues with himself

Loses these arguments.




Setting up SRCA with QBO3 and QDS

posted Jul 5, 2013, 4:05 PM by Unknown user   [ updated Oct 1, 2013, 6:45 PM by Eric Patrick ]

There are a few moving parts to this but the process is pretty straight forward.

Credientials.config - get username and password from QDS

<Credential UriPrefix="https://uatmilitary.quandis.net/" AuthType="Basic" Username="" Password="" Domain="" />

New Statement

SCRASelect -  this will pull the same data from the contact as a select but will unmask the ssn.
I added it into configuration Entry table. Needs to be a DataReader
<Statement Name="Select" Query="SELECT * FROM Contact WHERE ContactID IN ({Where.IdList})"/>

Copy and paste the below into Contact.config
<Service Name="SCRASearch"
    Type="qbo.Service.HTTP.HttpExchange, qbo.Service.HTTP"
    <!--Process to invoke when QDS response is returned-->
        <Step Name="Product"
            Type="qbo.Service.HTTP.HttpExchange, qbo.Service.HTTP"


Set up several IFTs:
  • QDS.OrderRequest.Response.SCRA
  • QDS.Product.SCRA
  • QDS.OrderRequest.Failure
These should be just pulled from the templates directory in source.

Ensure the template is set up properly


Ensure that QDS is posting responses to the correct url and has a login.

Passing Dates in Report Method Statements

posted Mar 5, 2013, 3:37 PM by Unknown user

So you create a great query ( Loan.ashx/AwesomeReport ) and like most reports you have a StartDate and EndDate.
You go ahead and create the ReportQuery and pass in some default values say Loan/AwesomeReport?StartDate=3/1/2013&EndDate=3/15/2013

When you go to run this you end up getting String cannot be converted to DateTime error.

The reason is that URL Method parsing splits on the / character so you are actually trying to put 3 into StartDate.

If you change this to:Loan/AwesomeReport?StartDate=3-1-2013&EndDate=3-15-2013

It works great.  Just an FYI.

Removing multiple ASP.NET development server processes

posted Aug 10, 2012, 2:29 PM by Unknown user   [ updated Aug 10, 2012, 2:35 PM ]

Sometimes when you are running QBO and debugging by attaching to process you will end up with a dozen or so ASP.NET development server processes.  The way to stop this from occurring from the start is changing the properties in the Web Tier projects.  The value Always Start When Debugging needs to be set to false as explained in this article.

So if you do a fresh pull from source or just forget to set them to false you have several instances of it running.  You can go to the tray icons and remove them by right clicking or you do the following:

  1. Open up PowerShell
  2. Run this command:  kill -name webdev.*
This will remove all processes named webdev.* so you won't have to worry about going through and clicking them all.

Quandis Intellectual Property

posted Oct 5, 2011, 5:19 AM by Eric Patrick

Background: What is "Core"?

Clients, particularly Value Added Resellers (VARS) such as First American, often ask us to define what is Quandis' intellectual property. The answer can grow complicated, but boils down to this: 
  • C# code namespaced with qbo.* is Quandis IP; other namespaces are not
  • SQL code sourced in qbo.* projects is Quandis IP; others are not
  • XSLTs sourced in qbo.* projects is Quandis IP; others are not
  • Configuration data (e.g. workflows) sourced in qbo.* projects are Quandis IP; others are not
Breaking this down by example:

 Quandis IPClient IP 
  • qbo.Core
  • qbo.CoreWeb
  • qbo.Debt
  • qbo.Mortgage
  • qbo.Credit
  • qbo.Skiptrace
  • qbo.Plugins
  • ncm.quandis.com
  • sam.quandis.com
  • ci.quandis.com
  • {client}.quandis.com 

Example 1: First American builds a customized National Case Management Site

First American's National Case Management (NCM) project includes several things, including:
  • a highly customized skin (ncm.Skin project)
  • customized advanced search pages (ncm.Web project)
  • overrides to core stored procedures (ncm.Database project)
  • a global messaging inbox (enhancements to qbo.Message)
In this example, Quandis resources (thanks Mona!) extended the qbo.Message module to handle the use cases presented by First American. First American has every right to use and customize these extensions, but since the code resides in qbo.Message, Quandis has the right to resell / deploy this functionality to other clients. Quandis has no right to resell the NCM skin or customized advanced search pages to other clients without FirstAm's permission.

When deciding who should execute code changes and in what project they should reside, my primary goal is to assess whether the functionality can be reused across clients. If it can, we implement in a qbo.* project, and generally have Quandis resources execute on the change. If not, my preference is to have our VAR implement the change, though often with our help.

Note that the moment First American decided to override core stored procedures (e.g. stored procedures source controlled in qbo.* projects), they also "code split" from our product. They will not be able to accept system updates from Quandis without a manual merge of our changes with their changes.

Example 2: First American customizes BPO workflow

This example illustrates how Quandis IP extends beyond compiled source code. The compiled code for the BPO system is the same compiled code as the Debt Collections system, the Short Sale system, and the NCM system!  What makes the BPO system a BPO system includes:
  • BPO workflows (rows in the Decision* tables)
  • BPO custom forms (rows in the ImportForm* tables, and related XSLTs)
  • BPO specific reports
First American has the right to modify custom forms (say, add new fields or change the layout). However, once they do so, they "code split" from our product. They will not be able to accept BPO updates from Quandis without a manual merge of our changes with their changes.

They also have the right to modify a BPO workflow. However, once they do so, they both code split, and more practically, risk breaking the behavior of the standard BPO system. It is in both parties' best interested to ensure that they do so with a full understanding of how the workflow is configured, so they can appropriately support the changes they make.

Realistically, there are changes that can be made with little or no impact to the "standard" BPO system. For example, adding fields to a custom form simply tracks these fields in the ImportForm.ImportFormXml field, and would not degrade the performance of the BPO workflows. However, removing fields from a custom form that are evaluated by a workflow if/then statement will most certainly change the behavior of the BPO workflows. It is crucial that all parties be capable of assessing the impact of such changes.

Uniform Appraisal Dataset

posted Aug 2, 2011, 8:10 AM by Eric Patrick

The GSE (Fannie Mae, Freddie Mac) are implementing new standards for appraisals.

Extending Javascript Classes

posted Jul 26, 2011, 8:43 AM by Eric Patrick

Javascript classes can be extended or overridden while maintaining prototypical inheritance.  This allows you to:
  • change or extend options, or
  • override existing methods
without a complete override of the class. If the base class is later extended within qbo.Core(Web), your class will inherit those extensions unless they conflict directly with your extensions.

Example A: Extend qbo.DebtObject to implement a custom FinancialDetailXhtml method

qbo.DebtObject.implement('FinancialDetailXhtml', function() {
new Request.HTML({
url: '/DtaWeb/DebtService.asmx/FinancialDetail',
method: 'post',
update: this.Element.id,
evalScripts: true,
debtID: this.Get('DebtID'),
xsltUrl: this.Get('XsltUrl', '/Templates/Debt/DebtFinancialDetail.xslt')
onRequest: this.Working.bind(this),
onSuccess: this.Display.bind(this),
onFailure: this.Error.bind(this)

Example B: Extend qbo.Offer to implement extended columns

qbo.OfferObject.implement('Columns', ["OfferID", "Offer", ..., "MyCustomLedgerItemA", "MyCustomLedgerItemB"]);

Read only FTP hosting via CloudBerry

posted Jun 16, 2011, 3:01 PM by Kevin Foley   [ updated Jun 16, 2011, 3:06 PM ]

Eric's previous post shows how to set up Cloudberry to simulate a FTP site.
This post shows how to restrict the client to read only access of the files while restricting their view to their own bucket.

First I created a bucket at the root level called x-wandw-ort-quandis-com 

I then created an AIM account called WandWViewOnly as described in Eric's post.
Everything works fine, but the W&W users can see the two other root buckets ort-quandis-com and uat-ort-quandis-net and any other bucket at the root level.

To restrict their access to their own bucket I created the AIM policy WilliamsReadOnly listed below

  "Statement": [
      "Effect": "Allow",
      "Action": "s3:Get*",
      "Resource": "arn:aws:s3:::x-wandw-ort-quandis-com/*",
      "Condition": {}
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::x-wandw-ort-quandis-com",
      "Condition": {}

This works, but an extra step is needed in CloudBerry so that tha the W&W users can see the bucket.

After the W&W user connects via Cloudberry their list of buckets will emtpy, they need to create an external bucket.
This is done by clicking on the green cube and then specifying the bucket name, in my case x-wandw-ort-quandis-com 
Once they do this then can then drill into the x-wandw-ort-quandis-com bucket to see their files.

This type of configuration is explained in more detail here

FTP Hosting for QBO Clients and Vendors

posted Mar 7, 2011, 8:17 AM by Eric Patrick

QBO clients frequently ask if we provide FTP sites for integration with their clients and vendors.  We can provide this using existing Amazon S3 account and an FTP-like client called CloudBerry Explorer. To set up an "FTP Site" for a third party:
  • Ensure an Amazon S3 account exists for the QBO client (see Appendix C of the QBO Product Data Sheet - Attachment Module),
  • Create a dedicated bucket for the third parties to access (e.g. "VoiceMemos")
  • Download and install CloudBerry Explorer PRO ($40) (this will be required for setup, but not for ongoing access),
  • Create user accounts for the third parties that will need access to the "FTP Site"
    • note that you need two policies; one to list the bucket, one to read/write files; this is mentioned in the article but easy to miss
  • Provide the third parties with:
    • a hyperlink to download CloudBerry Explorer (free version is fine)
    • the access key and secret key create when creating user accounts above
Note that QBO systems can be configured to read from these dedicated buckets, so that automated processing of files from the QBO site can be configured.

DTA successfully split from CoreLogic

posted Feb 19, 2011, 7:50 AM by Eric Patrick

Our FASLO friends have split into two companies: CoreLogic ADV (run by Brett Benson), and DTA (run by Jason Pinson).  DTA is now hosted in the Quandis Data Center (Irvine), and ADV remains running in the CoreLogic data center.  Thanks to Kevin Foley, Tamara Pinson, and of course the DTA team for making this difficult transition.  DTA is focused on debt collections, and will be able to leverage a lot of the newer features of QBO.  We should see them benefit from the VIP Collect concepts we rolled out for Cerno, and can expect them to provide some good real-world feedback to help us improve our Debt and SkipTrace modules.

Cerno is in part run by Ted Cassell, who once worked for Jason Pinson at FASLO/CoreLogic.  Cerno and DTA will be working together, so we can expect some QBO-QBO integrations between them.

1-10 of 12