diff --git a/CONTEXT.md b/CONTEXT.md index c7c435926..ad8344d10 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -472,6 +472,10 @@ _Avoid_: new API, current API The auth credential required by the New EPC API; stored in the `EPC_AUTH_TOKEN` environment variable. _Avoid_: API key, auth token, secret +**Void Property**: +A place Abri reports as having no live tenancy, signalled by `getSCSTenantData` returning a `RelayError` whose message is exactly `No_tenancy_found`. A normal outcome of the tenant-data sync, not a failure: there are no signatories to create as deal contacts, so the flow completes and notes the deal instead of dead-lettering the message. Distinct from a tenancy carrying no tenants (a tenancy exists; nobody is recorded against it), and from the same words arriving as a dumped 4GL query (`No Tenancy Found for Query FOR EACH ...`), which stays a rejection — Abri does not send that form to mean "known empty". +_Avoid_: empty property, no tenancy (names the message, not the state), untenanted + ## Team Who's who on the project, so commit authorship and review history read diff --git a/docs/abri-hubspot-ops-guide.md b/docs/abri-hubspot-ops-guide.md index d307854fb..21ea821cb 100644 --- a/docs/abri-hubspot-ops-guide.md +++ b/docs/abri-hubspot-ops-guide.md @@ -26,7 +26,7 @@ counts. | When you… | Abri's system… | How you know it worked | |---|---|---| -| Set **Expected commencement date** for the first time | Sends us the tenancy details for the property | Tenant contact records appear in HubSpot, linked to the deal | +| Set **Expected commencement date** for the first time | Sends us the tenancy details for the property | Tenant contact records appear in HubSpot, linked to the deal — unless Abri reports the property as empty (see below) | | Set **Confirmed survey date** for the first time | Creates the survey booking (a "job") against the property, assigned to the surveyor on the deal | Abri's job number appears in **Client booking reference** on the deal | | Change **Confirmed survey date**, **Confirmed survey time** or **Third-party surveyor identifier** on a deal that already has a booking | Updates the existing appointment — new date/time and/or reassigns it to the new surveyor | The deal keeps the same Client booking reference | | Record a **3rd attempt** (Number of attempts reaches 3) **and** set **Outcome** to an unsuccessful value (see below) | Cancels the booking as abandoned | — (this only fires once per deal) | @@ -41,6 +41,12 @@ counts. Any other outcome (or fewer than 3 attempts) does **not** cancel anything in Abri's system. +**Empty properties.** If Abri has no live tenancy for the property, no tenant contacts +appear on the deal — there is nobody to add. This is expected, not a fault, and nothing +needs re-triggering. Note that Abri sends the same signal for a property reference it +does not recognise, so if you were expecting tenants, check the property is right before +assuming it's empty. + ## The fields, and why they matter | HubSpot deal field | What it feeds |