diff --git a/CONTEXT.md b/CONTEXT.md index ad8344d10..859c56b08 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -473,7 +473,7 @@ The auth credential required by the New EPC API; stored in the `EPC_AUTH_TOKEN` _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". +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 instead of dead-lettering the message, prefixing the deal's **Extra booking information** (`notes_for_surveyor`) with the `Void ||` marker. HubSpot has no append, so that property is read live and rewritten whole — never rewritten from the scraped snapshot, which lags by a scrape cycle and would discard a coordinator's unscraped edit. The marker doubles as the idempotency guard: a note already carrying it is left untouched, so redelivery never stacks markers. 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 diff --git a/docs/abri-hubspot-ops-guide.md b/docs/abri-hubspot-ops-guide.md index 21ea821cb..62a87011e 100644 --- a/docs/abri-hubspot-ops-guide.md +++ b/docs/abri-hubspot-ops-guide.md @@ -42,10 +42,14 @@ Any other outcome (or fewer than 3 attempts) does **not** cancel anything in Abr 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. +appear on the deal — there is nobody to add — and **Extra booking information** is +prefixed with `Void ||` so the surveyor sees it first. Anything already in that field is +kept, after the prefix. 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. +Delete the `Void ||` prefix if you establish the property is not empty after all — the +system only adds it once, so it will not come back on its own. ## The fields, and why they matter