Fulfill valuation orders with a network of validated brokers
Verified against source (15)
mortgage/Valuation.csmortgage/Valuation.Fields.csConfig/Valuation.configConfig/Broker.configmortgage/Property.csmortgage/app.configConfig/Setup.MortgageChild.xmlConfig/Setup.ContactFilter.xmlConfig/ObjectAccess.configdecision/DecisionStep.csdecision/Decision.csmessage/Message.csprocess/ProcessTemplate.Fields.csProcess/ProcessTemplate.Edit.xsltConfiguration/SqlPattern.cs
A valuation order (a broker price opinion or similar) arrives with a loan number and a property address. Someone has to find a broker who covers that address, get them to accept, collect their findings, and deliver a report, usually by phone and email, with the status living in someone’s inbox.
In this walkthrough you configure QBO to run that process. Imported orders start a workflow that checks the address, grants access and emails validated brokers who cover the property, assigns the order to the first broker who accepts, collects their results in a task, and generates the report as a PDF. Processors and brokers work from worklists; managers watch the pipeline from dashboards.
Who it’s for
Section titled “Who it’s for”Power users who configure templates and workflows for a valuation desk. Brokers and processors only see the result: worklist items and tasks.
Prerequisites
Section titled “Prerequisites”- Validated brokers. This walkthrough solicits only brokers tagged
Validated, each with its coverage areas (Geography) and at least one user. Set up broker onboarding and validation first: see Onboard and validate a broker network from a spreadsheet. - Address normalization for properties (step 8), so new properties are geocoded with latitude and longitude.
- Your form layouts for the broker’s findings, and a Word template for the valuation report.
- Permission to create message, task, document, workflow, process, and import templates.
Building blocks used
Section titled “Building blocks used”- Imports: loading valuation orders from a spreadsheet
- Cases: the valuation process and its template
- Workflow: orchestrating validation, solicitation, assignment, and fulfillment
- Forms: tasks for property validation, broker acceptance, and fulfillment
- Messaging: solicitation emails
- Document Management: the valuation report
- Security: giving each broker access to the orders they’re offered, and nothing else
- Worklists: where brokers and processors pick up their work
Build the templates in this order, because later templates refer to earlier ones.
1. Create the solicitation email
Section titled “1. Create the solicitation email”From Templates > Messages, add an HTML message template:
| Setting | Value |
|---|---|
| Name | Valuation Solicitation |
| Applies To | Valuation |
| Subject | New Valuation available for {//PropertyItem[1]/Address} {//PropertyItem[1]/City} {//PropertyItem[1]/State} {//PropertyItem[1]/PostalCode} |
| Body (HTML) | Please log in to <a href="{BaseUrl}">{BaseUrl}</a> and open your new "Valuation Solicitation" worklist item. |
The braces are merge fields: XPath expressions evaluated against the valuation’s data, which includes its property. See Messaging.
2. Create the tasks
Section titled “2. Create the tasks”From Templates > Tasks, add three task templates, each applying to Valuation:
| Task template | Who completes it | Purpose |
|---|---|---|
| Property Validation | Processor | Correct an address that couldn’t be geocoded, so coverage can be matched. |
| Valuation Solicitation | Broker | The broker accepts the order. Whoever completes it gets the order. |
| Valuation Fulfillment | Broker | The broker’s findings. |
Lay out each form with the GUI Designer on the task template’s summary page. On Valuation Fulfillment, use the State Diagram to enforce the review loop: the broker submits for review, and the processor either approves or sends it back for corrections. See Forms.
3. Create the report template
Section titled “3. Create the report template”From Templates > Documents, add a PDF document template named Valuation Results, applying to Valuation, using the Aspose Words generator with your Word template. Merge fields pull from the valuation, its property, and the completed fulfillment task. See Document Management.
4. Build the solicitation workflow
Section titled “4. Build the solicitation workflow”From Templates > Workflows, create a workflow template:
- Workflow Template:
Valuation Solicitation - Applies To:
Valuation - Repeatable:
One active per parent
Add these steps:
| Step | Type | Configuration | Depends on |
|---|---|---|---|
| Missing Lat/Lon? | If/Then Statement | Condition: count(//PropertyItem[1]/Latitude) = 0 or count(//PropertyItem[1]/Longitude) = 0 |
|
| Property Validation Task | Add a Task | Template: Property Validation |
Missing Lat/Lon? (True) |
| Broker Access | Advanced Step | For each broker the search returns, grant access (see below). | Missing Lat/Lon? (False) or Property Validation Task (same group) |
| Broker Solicitation | Advanced Step | For each broker not yet solicited, send the email (see below). | Broker Access |
| Valuation Solicitation Task | Add a Task | Template: Valuation Solicitation |
Broker Access |
| Broker Acceptance | Advanced Step | Assign the order to the broker who accepted (see below). | Valuation Solicitation Task |
Putting both dependencies of Broker Access in the same group makes them alternatives: the step starts after either branch finishes. See Dependencies.
Broker Access searches for brokers and grants each one access to this valuation. Its data source is a broker search, limited to ten brokers at a time:
Broker/Search?SqlFilters=Tag,GeographyCoverage,HasNoAccess&Tag=Validated&HasNoAccessObject=Valuation&HasNoAccessObjectID={//ValuationID[1]}&Address={//Address[1]}&City={//City[1]}&State={//State[1]}&PostalCode={//PostalCode[1]}&Latitude={//Latitude[1]}&Longitude={//Longitude[1]}&DisplaySize=10and its operation, run once per broker returned, is:
ObjectAccess/ObjectAccessInsert?ID={//ValuationID[1]}&Object=Valuation&GroupObject=Broker&GroupObjectID={BrokerID}Taglimits the search to brokers taggedValidated.GeographyCoveragekeeps brokers whose coverage areas include the property and none of whose exclusions do. It matches on city, postal code, county, state, and driving distance from the property’s latitude and longitude, which is why the address must be geocoded first. The standard configuration defines this filter for contacts; add the same filter to the Broker module, where broker coverage areas are stored.HasNoAccessis a search filter you add to the Broker module: brokers who don’t already have access to the given object. It isn’t part of the standard configuration.
Broker Solicitation emails each broker who has access but hasn’t been solicited yet. Its data source is:
Broker/Search?SqlFilters=NotSolicited&NotSolicitedObject=Valuation&NotSolicitedObjectID={//ValuationID[1]}&NotSolicitedTemplate=Valuation Solicitationand its operation is:
Message/Send?Template=Valuation Solicitation&Object=Valuation&ObjectID={//ValuationID[1]}&ToAddress={Email}NotSolicited is also a filter you define on the Broker module: brokers with access who haven’t been sent the given message template for this object.
Broker Acceptance runs when a broker completes the solicitation task. Its operation is:
Valuation/BrokerAccept?ID={//ValuationID[1]}&AcceptedPersonID={//ImportFormItem[ImportFormTemplate='Valuation Solicitation']/UpdatedPersonID}BrokerAccept sets the valuation’s broker to the broker that the accepting user belongs to, then removes access for every other broker. The order disappears from their worklists.
5. Build the fulfillment workflow
Section titled “5. Build the fulfillment workflow”Create a second workflow template, Valuation Fulfillment, applying to Valuation:
| Step | Type | Template | Depends on |
|---|---|---|---|
| Solicitation Workflow | Launch a Workflow | Valuation Solicitation |
|
| Fulfillment Task | Add a Task | Valuation Fulfillment |
Solicitation Workflow |
| PDF Document | Generate a Document | Valuation Results |
Fulfillment Task |
A child workflow step completes when the child workflow does, so fulfillment starts once a broker has accepted.
6. Create the valuation process template
Section titled “6. Create the valuation process template”From Templates > Processes, add a process template:
| Setting | Value |
|---|---|
| Process Template | Valuation Fulfillment |
| Applies To | Loan |
| Sibling | Valuation |
| Workflow | Template: Valuation Fulfillment |
Sibling makes each process a valuation, with valuation fields such as the assigned broker. To vary the workflow by client, product, or region, set Workflow to a matrix that returns a DecisionTemplate instead. A Ledger matrix can price each order the same way. See Cases.
7. Create the import template
Section titled “7. Create the import template”From Templates > Import Files, add an import template:
- Applies To:
Loan - Import Engine:
BatchReader
Add these mappings:
| Source | Destination | Translation | Required | Text |
|---|---|---|---|---|
| LoanNumber | Loan |
Yes | No | |
| SubscriberID | SubscriberID |
Loan-Servicer-{Loan}-{Servicer_Organization} |
No | No |
| Servicer | Servicer_Organization |
Yes | No | |
| Servicer_SubscriberID | Servicer_SubscriberID |
Servicer-{Servicer_Organization} |
No | No |
| Address | Property_Address |
Yes | No | |
| City | Property_City |
Yes | No | |
| State | Property_State |
Yes | No | |
| PostalCode | Property_PostalCode |
Yes | No | |
| Valuation Fulfillment | Valuations_0_Template |
No | Yes | |
| ValuationReference | Valuations_0_Valuation |
Yes | No | |
| Valuations_0_SubscriberID | Valuations_0_SubscriberID |
Valuation-{Valuations_0_Valuation} |
No | No |
The template expects a spreadsheet or CSV with the columns LoanNumber, Servicer, Address, City, State, PostalCode, and ValuationReference.
- SubscriberID translations give each loan, servicer, and valuation a stable external key, so importing the same order twice updates it instead of duplicating it.
Valuation Fulfillmentis marked Text, so it’s a fixed value: the process template each new valuation uses.
8. Normalize property addresses
Section titled “8. Normalize property addresses”From Configuration > Modules, open the Property module and, on the Settings tab, set NormalizePropertyOnSave to True. It’s off by default. When it’s on, saving a property matches it to an existing property where possible and geocodes new addresses, which fills in the latitude and longitude that the coverage search relies on. Addresses that can’t be geocoded take the Property Validation branch of the workflow.
Result
Section titled “Result”Drop an order file on the import template and, for each row, QBO:
- creates or updates the loan, servicer, and property, and opens a valuation
- routes addresses it couldn’t geocode to a processor for correction
- grants access to, and emails, up to ten validated brokers who cover the property
- assigns the order to the first broker who accepts, and removes everyone else’s access
- collects the broker’s findings through a reviewed task, and generates the PDF report
Each broker sees only the orders offered or assigned to them. Managers see every order’s status, step, and age from the worklist and workflow dashboards.
Next steps
Section titled “Next steps”- Grade brokers with an audit score on completed fulfillment tasks. See Scoring.
- Split fulfillment into several tasks with their own durations, so worklists show exactly where each order is waiting. See Worklists.
- See how valuations, inspections, and title work fit into default servicing on Mortgage Servicing.