Pass-through integration for local government · records are never stored System status1-559-251-7767Sentra familySign in
SentraBridgeIntegration platform
ExampleTemplate

Permit pipeline: map issued, report finaled, file expired

Nightly, reads changed permits with a SQL query, cleans and checks them, then puts issued permits on the ArcGIS map, emails building a total of finaled permits by type, and writes expired permits to a CSV file on SFTP.

This flow

12 steps

StartsOn a schedule
SystemsPostgreSQL / PostGIS, Esri ArcGIS feature layer, SFTP server
Branches4
Stored recordsNone: pass-through
§ The flow

The whole flow, as it appears on the canvas.

Scroll sideways on small screens. Colors show the kind of step: start, read, change, decide, write.

Flow diagram: Permit pipeline: map issued, report finaled, file expiredNightly, reads changed permits with a SQL query, cleans and checks them, then puts issued permits on the ArcGIS map, emails building a total of finaled permits by type, and writes expired permits to a CSV file on SFTP.Nightly at 2 amOn a scheduleChanged permitsRead database · PostgreSQLClean and checkApply rulesIssued?If / elseMap attributesMap fieldsFinaled?If / elseMake map pointMake map pointTotal by typeSummarizeExpired?If / elseAdd to the permit mapSend records · ArcGISEmail buildingSend emailExpired permits to SFTPWrite file · SFTPYesNoYesNoYes
StartReadFilesDatabaseChangeDecideWriteAct
§ Step by step

What each step does.

  1. 01 · Start · On a schedule

    Nightly at 2 am

    • Every night at 2:00 am (workspace time zone)

    Then: Changed permits

  2. 02 · Database · Read database · PostgreSQL / PostGIS

    Changed permits

    • Reads from PostgreSQL / PostGIS with a read-only query
    • SELECT permit_number, permit_type, status, address, applicant, valuation, issued_on,
             ST_Y(geom) AS lat, ST_X(geom) AS lng, updated_at
      FROM permits
      WHERE updated_at > COALESCE(CAST(:last_success_at AS timestamptz), '1970-01-01')
      ORDER BY updated_at
    • Row ID column: permit_number (used for replay and lineage)

    Then: Clean and check

  3. 03 · Change · Apply rules

    Clean and check

    • permit_type: title
    • status: lower
    • status: one of issued, finaled, in review, expired
    • valuation: number
    • applicant: required
    • Records that fail a check are dropped

    Then: Issued?

  4. 04 · Decide · If / else

    Issued?

    • Yes when status is issued

    Then: Yes → Map attributes; No → Finaled?

  5. 05 · Change · Map fields

    Map attributes

    • Shapes each record into 6 fields: ref, status, address, type, lat, lng

    Then: Make map point

  6. 06 · Decide · If / else

    Finaled?

    • Yes when status is finaled

    Then: Yes → Total by type; No → Expired?

  7. 07 · Database · Make map point

    Make map point

    • Builds an ArcGIS map point from lat and lng
    • Drops records without coordinates

    Then: Add to the permit map

  8. 08 · Change · Summarize

    Total by type

    • Counts records by permit_type and adds up valuation

    Then: Email building

  9. 09 · Decide · If / else

    Expired?

    • Yes when status is expired

    Then: Yes → Expired permits to SFTP

  10. 10 · Write · Send records · Esri ArcGIS feature layer

    Add to the permit map

    • Creates Features in Esri ArcGIS feature layer
  11. 11 · Act · Send email

    Email building

  12. 12 · Files · Write file · SFTP server

    Expired permits to SFTP

    • Writes CSV file expired-permits-{{ $today }}.csv to outbox
    • One file with every record
§ Systems

Connectors used

Swap any of them for another system with the same kind of data.

Run this flow on your systems.

We'll set up a workspace with your systems in a sandbox and build your first flow with you.