Push from communication workbench to FieldSeeker service request #168
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Following on from issue #167 the final missing piece to really streamline the process in the near term (i.e. before assignments can be made to Nidus notes) pushing reviewed reports into FieldSeeker as Service Requests would help the process considerably.
The only piece of information that we do not capture between RMO and the communications workbench that would be needed to push to FieldSeeker is the Tech that the report is assigned to and a general note to the tech. If we added a small extension to the tool bar on the the left side with a drop down to select the assigned tech, a short comments field that they can put general comments in, and a button that would push it to FieldSeeker.
What would need to happen from there is for a record to be created in AGOL in the ServiceRequest layer with the information from the report.
Once it is created and the status is set to assigned it will show up in FieldSeeker UI for the techs to act on.
Let me know if you need help mapping between Nidus and FieldSeeker.
Let me know if you have any more questions.
Hope I'm not working you too hard @ned but here is another one
Hey Benjamin! Okaly-dokely do — this is a good one.
A few questions to scope things out before I start sketching:
1. Tech list source — Where should the assigned-tech dropdown pull from? Is there a FieldSeeker users/techs endpoint or AGOL feature service we can query, or would this be a static list managed in nidus-sync?
2. AGOL integration — Does nidus-sync already have credentials/access to push to the AGOL ServiceRequest layer, or will we need to wire that up? If you can point me at the AGOL ServiceRequest feature service URL + layer ID (similar to how we found the ArcGIS parcel layers) that'd be a big help.
3. Field mapping — I'll absolutely take you up on the mapping offer. A rough map of which Nidus communication fields go to which ServiceRequest fields would save a lot of back-and-forth. Especially: what maps to the geometry (is it the report location?), what fields are required vs optional, and what the ServiceRequest schema looks like.
4. Gate/state — You mentioned "reviewed reports". Should the Push button only appear for communications that have been reviewed, or should it be available for any communication in the workbench?
5. Relationship to #167 — This builds on the workbench but both are useful independently. Should I scope #168 as standalone (assuming the workbench toolbar exists from #167), or as something that could land first if #167 takes longer?
6. UI details — You mentioned a toolbar extension on the left side. Is that the same left panel with the filter controls we were discussing for #164/#165? Want to make sure layouts don't conflict.
Happy to start noodling on this in parallel with the other workbench issues!
Hello @ned, great questions.
Hey Benjamin — thanks for the thorough answers, neighborino! Let me synthesize and lay out what I've found.
My Understanding
active=true. I'll need to find this in the AGOL schema.Proposed Field Mapping: Nidus Report → AGOL ServiceRequest
I've queried both the Nidus report schema (compliance/nuisance/water subtypes) and the existing FieldSeeker
ServiceRequesttable. Here's my proposed mapping:report.address.rawreport.reporter.namereport.reporter.phone.numberreport.reporter.email0report.compliance.has_dogorreport.water.access_dogreport.compliance.commentsorreport.water.commentsreport.address.locationFor reports with multiple related records, we'd create one ServiceRequest per related report, each linked to the same communication.
Implementation Plan
Backend: A
POST /api/communication/:id/push-to-fieldseekerendpoint that:{assigned_tech, notes_for_tech}in the bodylayer.ServiceRequestfrom the communication's source reportarcgis-go: Add an
ApplyEdits(features)method toServiceFeature— wraps the AGOL RESTPOST {url}/{layerId}/applyEditswith{"adds":[...]}.UI: Add a section in
CommunicationColumnAction.vuebelow the existing action buttons:Two questions before I start sketching code:
Technicians layer: I need to find which FieldSeeker layer/table has the tech list. Do you know the layer name? Or should I query the schema files to find it?
DOG field format: For compliance reports with
has_dog = true, should this map to DOG=1 directly, or does FieldSeeker expect a specific string value?I'll hold on implementation until @eli clarifies #167 relationship, but I'm ready to get started when you give the go-ahead!
@ned, sorry I misunderstood before. There is no relationship to #167 aside from they are solving the same problem. So you can go ahead with this. The solution for #167 will create a communication object that can be pushed just like any other object. So no need to wait for Eli's input in that regard. A note on the field mapping. Anonymous report does not mean we don't collect the caller information it means that we don't tell the property resident of the address being reported who made the report. This will happen often where a neighbor will call to report their neighbors green pool and don't want to create problems by being identified as the source of our investigation. So it is important to map this correctly.
Thanks Benjamin! That clears things up nicely, diddly-doodley do.
Key takeaways
#167 relationship: Confirmed independent — go ahead with #168. The phone intake (#167) will produce communications that this push flow handles the same way. No blockers here.
Anonymous report mapping: Got it — "anonymous" means the reporter identity is protected from the resident, not that we lack the info. So we always collect CLRFNAME/CLRPHONE1/CLREMAIL from the report, and CLRANON should be set to 1 when the underlying report's
anonymousflag is true. Correct me if I'm wrong: if the caller explicitly requested anonymity, CLRANON=1 and FieldSeeker knows not to reveal the reporter identity to the resident. If not anonymous, CLRANON=0.Remaining questions
My field mapping proposal is at comment #1575 — let me know if that looks right or needs adjustments.
Also circling back on two questions from that comment:
Technicians layer — Do you know which AGOL feature layer/table holds the FieldSeeker technicians list where
active=true? I need to query it to populate the dropdown.DOG field format — For compliance reports with
has_dog = true, does DOG expect a simple boolean (1/0), or a specific string value?Next steps
I can:
Just need those two answers and a thumbs up on the proposed mapping and I'll start generating code!
benjaminsperry referenced this issue2026-08-04 02:19:22 +00:00