---
title: "Build logs, not thought leadership."
description: "Build logs from live Salesforce engagements in home services: architecture decisions, metadata excerpts, and Field Service configuration."
source: "https://noconaconsulting.com/blog/"
---

# Build logs, not thought leadership.

Field Notes is the Nocona Consulting build log — what is actually being built, written down as it happens, with the metadata, the diagrams, and the decisions that did not survive first contact.

Build log Doorvana Nov 6, 2026

### [The form showed Texas. The record had no state.](https://noconaconsulting.com/blog/flow-address-component-statecode-blank/)

A screen flow swapped typed address fields for the Address component with Google address lookup. The suggestion filled Street, City, State and ZIP on screen, the deploy succeeded, every test passed, and the Lead saved with StateCode blank. What the lookup actually returns in province and country, how to map it to State and StateCode, and why an update needs the code alone.

-   Flow
-   Screen flows
-   Address
-   State and Country/Territory Picklists

Build log Doorvana Nov 5, 2026

### [The form with no Next button](https://noconaconsulting.com/blog/screen-flow-allowfinish-next-button/)

A screen flow that replaces the Lead New action had three screens with allowFinish set to false. The footer rendered, empty, and nobody could get past screen one. Why allowFinish governs the Next button too, the blank screen input that IsNull never matched, and the connector that looped back and erased everything the user had typed.

-   Flow
-   Screen flows
-   Lead
-   Aura

Build log Doorvana Nov 4, 2026

### [Renaming the business before anyone depends on the old words](https://noconaconsulting.com/blog/renaming-record-types-and-picklist-values-before-production/)

The client renamed his lines of business before anything had reached production. Which API names to change and which to only relabel, renaming an Opportunity record type through the Tooling API without changing its Id, the 11 fields a non-admin could not see, and two deploy failures on the way to a check-only validation against production.

-   Record types
-   Global value sets
-   Tooling API
-   Field-level security

Build log Doorvana Oct 22, 2026

### [One Lead record type, and the values it never offered](https://noconaconsulting.com/blog/one-lead-record-type-builder-prospects/)

Builder prospects and homeowner service requests share a single Lead record type, told apart by a Customer Type field. The decision is sound and it is not free: picklist values the field had and the record type never enabled, REQUIRED\_FIELD\_MISSING on a builder insert, a conversion flow about to turn a builder's office into a job site, and an Opportunity that lands on the wrong record type.

-   Record types
-   Picklists
-   Lead conversion
-   Flow

Build log Doorvana Oct 15, 2026

### [The call was logged. The nurture tag silently never happened.](https://noconaconsulting.com/blog/flow-formula-null-multi-select-picklist/)

A subflow tags a builder for nurture when the call outcome is Existing Installer. The first formula would not deploy because it touched a multi-select picklist. The second deployed, ran without a fault, updated every other field in the same assignment, and wrote null. How it was found, why getVariableValue could not see it, and the nested IF that fixed it.

-   Flow
-   Flow formulas
-   Multi-select picklists
-   Lead

Build log Doorvana Oct 14, 2026

### [The job was booked and the crew was never told](https://noconaconsulting.com/blog/service-appointment-from-won-opportunity/)

Closed Won produced an Order and an install Work Order, and the dispatch board stayed empty, because a Work Order is not a thing anyone can schedule. Creating the ServiceAppointment in Apex rather than switching on ShouldAutoCreateSvcAppt, and the silent SaveResult that cost an afternoon on the way.

-   Field Service
-   Service Appointment
-   Work Type
-   Apex

Architecture Doorvana Oct 13, 2026

### [Two doors, one trip fee, and the fields that were on the wrong object](https://noconaconsulting.com/blog/work-order-vs-line-item-field-grain/)

A warranty network's diagnosis checklist was planned as seven fields on WorkOrderLineItem. Two of them belong on the Work Order instead, because the trip fee is charged once per visit however many doors get diagnosed — and the question that settles it is cardinality, not the requirement document.

-   Field Service
-   WorkOrderLineItem
-   WorkOrder
-   Data model

Build log Doorvana Oct 12, 2026

### [Winning the bid books the order and starts the install — exactly once](https://noconaconsulting.com/blog/booking-a-won-bid-order-and-install/)

Closed Won on a construction bid has to produce a booked Order and an install job, and the install must never bill a second time when the crew finishes. Two independent automations cooperate through one standard field that neither of them owns: WorkOrderLineItem.OrderId.

-   Opportunity
-   Order
-   Quote
-   Field Service

Build log Doorvana Oct 9, 2026

### [The job is not finished when the first visit is](https://noconaconsulting.com/blog/work-order-completion-guard-open-service-appointment/)

A two-visit repair bills once, when the Work Order completes. A technician who taps Completed at the end of visit one invoices the diagnosis and nothing else, and the spring fitted on Thursday never reaches an invoice. The guard that stops it once the return visit is on the job, the status that had to exist before blocking anything was reasonable, and the case no guard of this kind can see.

-   Field Service
-   Apex
-   Work Order
-   Service Appointment

Build log Doorvana Oct 8, 2026

### [One dropdown took one element. The one next to it took four.](https://noconaconsulting.com/blog/flow-collection-choice-set-junction-object/)

Two dropdowns on the same screen flow, identical to the user. One is a record choice set. The other has to reach a Location through AssociatedLocation, which no record choice set can do — and the metadata element for the thing that can does not exist under the name you would guess.

-   Flow
-   Field Service
-   AssociatedLocation
-   Metadata API

Architecture Doorvana Oct 7, 2026

### [The builder does not change when the house sells](https://noconaconsulting.com/blog/builder-owner-warranty-lookup/)

Whether a garage door call is warranty or billable depends on who bought the door, not who owns the house. One extra lookup on Location is what makes that answerable — and one custom warranty date field that had to be deleted the next day.

-   Location
-   Asset
-   Warranty
-   AssetWarranty

Build log Doorvana Oct 6, 2026

### [The note said Built. It had never been deployed.](https://noconaconsulting.com/blog/built-does-not-mean-deployed/)

Five deploy errors, one cause. A foundational custom field and its global value set were written, committed, and never deployed — and every later piece of work assumed they existed. A dry-run found in seconds what reading the source never could.

-   SFDX
-   Source control
-   Deployment
-   Global value sets

Build log Doorvana Oct 5, 2026

### [I reported a duplicate-rule problem that did not exist](https://noconaconsulting.com/blog/duplicate-rule-header-setoptions/)

A test failed with DUPLICATES\_DETECTED, so the rules were obviously set to block. They were not. Database.DMLOptions carries allowSave, but setOptions does not carry the duplicate-rule header — only the Database.insert overload does, and by default that overload does not throw when the save fails for some other reason.

-   Apex
-   Duplicate rules
-   Testing
-   Metadata API

Build log Doorvana Oct 2, 2026

### [Two fields both called state, and only one of them will take TN](https://noconaconsulting.com/blog/lead-state-vs-statecode-restricted-picklist/)

With State and Country/Territory Picklists on, Lead.State holds Tennessee and Lead.StateCode holds TN. A Flow copying the wrong one into a restricted picklist looked correct, deployed clean, and would have failed every enquiry with an address on it.

-   Flow
-   Picklists
-   Global value sets
-   Location

Build log Doorvana Oct 1, 2026

### [The dropdown offered a value the save refused](https://noconaconsulting.com/blog/flow-choice-set-record-type-filtering/)

A screen flow built its Request Type dropdown from a picklist choice set, which returns the whole value set. The record type on Lead allowed a narrower list. The form offered New Construction and the save rejected it — and one of three lines of business had no route into the org at all.

-   Flow
-   Record types
-   Picklists
-   Screen flows

Build log Doorvana Sep 30, 2026

### [I reported four missing standard fields. All four exist.](https://noconaconsulting.com/blog/no-such-column-field-level-security/)

No such column 'BillToContactId' on entity 'Order' is a sentence you believe. Under API 67.0 user mode it also fires for a field that exists and that your profile simply cannot see — and sf sobject describe hides both cases identically.

-   Apex
-   Field-level security
-   Tooling API
-   Order

Architecture Doorvana Sep 29, 2026

### [Homeowners in Salesforce without Person Accounts, NPSP, or a single line of Apex](https://noconaconsulting.com/blog/household-accounts-without-person-accounts/)

Person Accounts are irreversible and NPSP is a managed package you inherit forever. The household model needs neither — but it turns Lead.Company into the whole problem, and there is an order-of-execution trap waiting.

-   Person Accounts
-   Lead conversion
-   Flow
-   Data model

Build log Doorvana Sep 28, 2026

### [The parts filter that read correctly and would have billed nothing](https://noconaconsulting.com/blog/product-consumed-isconsumed-billing-filter/)

A billing bridge filtered parts on IsConsumed = true, which reads like parts that were used. It means parts that came out of inventory. For a company with no warehouse it is false forever, and every spring would have fallen off every invoice without a single error.

-   Field Service
-   Apex
-   Billing
-   ProductConsumed

Architecture Doorvana Sep 25, 2026

### [Two ways to store a job-site address, benchmarked instead of argued about](https://noconaconsulting.com/blog/job-site-address-circular-delete/)

Salesforce Location has a VisitorAddressId lookup to a real Address object. It looked like the right answer. Three DMLs, two records, and a circular delete later, plain fields won.

-   Location
-   Field Service
-   Data model
-   Address

Build log Doorvana Sep 24, 2026

### [Putting the org in git found a forecasting bug nobody had noticed](https://noconaconsulting.com/blog/forecast-bug-source-control-found/)

Three Opportunity stages carried forecastCategory=Closed, so open pipeline was sitting in the Closed bucket. Nobody spotted it in the UI. The metadata retrieve showed it in one line.

-   Forecasting
-   Source control
-   Opportunity
-   Sales processes

Architecture Doorvana Sep 23, 2026

### [The multi-select picklist that could not survive its own success](https://noconaconsulting.com/blog/multi-select-picklist-to-junction/)

A multi-select picklist caps at 150 values, cannot be rolled up, joined or filtered properly, and there are roughly 390 US metro areas. Replacing one with a junction object, seeded from the Census delineation file.

-   Picklists
-   Junction objects
-   Reporting
-   Data loading

Build log Doorvana Sep 22, 2026

### [I built four Account record types yesterday and deleted them this morning](https://noconaconsulting.com/blog/record-types-vs-picklists/)

Record types are for process. Customer kind is an attribute. The test that sent four Account record types to the bin while three on Opportunity stayed — and the two deploy errors either choice hands you.

-   Record types
-   Object model
-   Picklists
-   Lead conversion

Build log Doorvana Sep 22, 2026

### [Day one on a greenfield Salesforce org: standing up Field Service without building on sand](https://noconaconsulting.com/blog/greenfield-field-service-setup/)

The order I set up Doorvana's Salesforce org — CLI, SFDX project, baseline retrieve, Field Service enablement, the FSL managed package — and what bit me on each.

-   Field Service
-   SFDX
-   Greenfield
-   Managed packages

Architecture Doorvana Sep 21, 2026

### [Opportunity is what you booked. Work Order is what you did. Never add them.](https://noconaconsulting.com/blog/one-revenue-ledger/)

The single most common way a home services Salesforce org starts lying about revenue — and the object discipline that prevents it.

-   Field Service
-   Revenue reporting
-   Object model
-   Order Products
