Google Sign-In Required

Use your company Google account to access the BetterFleet private content.

Back to private home

BetterFleet Support Private
Skip to content
BetterFleet Dev Wiki
Telematics EventBridge Path
Initializing search
    bf-dev
    • Home
    • Process
    • Products
    • Reference
    • Decisions
    • Work
    • Operations
    bf-dev
    • Home
      • Process Handbook
      • BetterFleet Workflow Map
      • Product Development System
      • Product Engineering Workflow
        • Process Workflows
        • Work Intake and Weekly Planning
        • Product Engineering Workflow in Linear
        • Product Engineering Delivery
        • Agent Guidance
        • Workflow
        • Skills
        • Skill Sources
        • Process Guides
        • GitLab Feature Flags
        • In-App Docs Authoring
        • Release Notes
        • Process Templates
        • Release Plan: <title>
      • Process Publishing
      • Product overview
        • General Reference
          • Core Domain Training
          • System Topology
          • Two-Axis Ontology Model
          • Ontology Primer
          • Worked Example
          • Evidence, Ownership, and Lineage
          • Energy Management
          • Standards and Protocol Map
          • Charging, Roaming, and Commercial Model
          • Charge Planning and Operations
          • Cross-Cutting Domains
          • Domain Coverage Matrix
        • BetterFleet Product Ontology
        • Core Operations Data Ontology
        • BetterFleet R&D Plan
        • Index
        • Architecture
        • Manage Product Capabilities
        • Manage Data and State
        • Manage Service Interaction Flows
        • Manage Reference
        • Manage Internal Application Diagrams
          • Manage Authorization And Permissions
          • bf-manage-core Auth and Authorization Model
          • Manage Authorization and Permissions
          • bf-manage-web Auth and Permission Model
          • Manage Service Catalog
          • bf-depot-sim
          • bf-digital-twin (Manage Role)
          • bf-fleet-health
          • bf-manage-connect
          • bf-manage-core
          • bf-manage-incidents
          • bf-manage-roaming
          • bf-manage-sitepwrmon
          • bf-manage-web
          • bf-schedule-creator (Manage Role)
          • bf-support-microsite
          • bf-telematics
        • Index
        • Architecture
        • Plan Reference
        • Plan Internal Application Diagrams
        • Plan Migration and Flags
        • Plan Simulation Request Lifecycle
          • Plan Service Catalog
          • bf-bnl-schedule-analysis-compute
          • bf-bnl-settings
          • bf-bnl-ui
          • bf-digital-twin (Plan Role)
          • bf-route-modelling
          • bf-schedule-creator (Plan Role)
      • Where to Ask Product Questions
      • Reference
        • Platform Reference
        • Platform Architecture
        • Script Runtime Model
        • Compose Profiles and Modes
        • Repository Map
        • Monolithic Git Transition FAQ
        • Monolithic Git Sizing
        • CI and Release Integration
        • Shared Reference
        • Shared Infrastructure Architecture
        • Secrets and Env Strategy
        • Vendors and Local Dependencies
        • System Reference
        • Cloud Data Dependencies
        • Ports and URLs
        • Service Matrix
          • API Docs
          • OCPI API Docs
          • OCPP API Docs
          • OSCP API Docs
          • VDV API Docs
          • Yard State API Docs
        • System Design
        • System Design: BBA Microgrid Controller Generic Packet Translation
        • System Design: Depot Simulation
        • System Design: IoT Sensor Packet
        • System Design: Microgrid Energy Orchestration
          • System Design: OCPP Profile 3 And ISO 15118 PKI
          • Architecture: BetterFleet OCPP Profile 3 and ISO 15118 PKI
          • Specification: BetterFleet OCPP Profile 3 and ISO 15118 Certificate Lifecycle Management
          • System Design: On-Prem Control
          • Challenge
          • Specification: BetterFleet On-Prem Continuity Control
          • System Design: OSCP
          • OSCP Protocol Documentation
          • Depot Sim Testing Requirements
          • System Design: OSCP Flexibility Provider Domain
      • Decisions
        • Architecture Decision Records
        • 0001 - Record architecture decisions
        • 0002 - Cognito for Authentication and Authorisation
        • 0003 - AWS Amplify for Authentication
        • 0004 - DynamoDB for default database
        • 0005 - Data Persistence
        • 0006 - Trunk-Based Development
        • 0007 - Generalised principle for automation
        • 0008 - Naming Repositories, Services, and URLs
        • 0009 - Use Timezone Aware DateTimes and UTC
        • 0010 - Use semantic release
        • 0011 - Centralized feature flag repository
        • 0012 - Use Named Exports in Storybook
        • 0013 - RESTful TITLE GraphQL
        • 0014 - Service Granularity
        • 0015 - Async/co-routine exception handling pattern
        • 0016 - Logging & log levels
        • 0017 - Instantiated Models
        • 0018 - Repository Pattern for Database Access
        • 0019 - Use of Design Tokens in TypeScript React Application
        • 0020 - API backwards compatibility and versioning
        • 0021 - Alembic Migration strategy
        • 0022 - Consistent react-hook-form usage
        • 0023 - Domain Event-Driven Architecture
        • 0024 - Domain Event Bus Tech Stack
        • 0025 - No enum types in DB table columns
        • 0026 - In-Memory Ormar Stores for Repository testing
        • 0027 - Storing Tab State in Query and Local Storage
        • 0028 - Adopt OpenTelemetry Semantic Conventions for Structured Logging
        • 0029 - Adopt RFC 9457 for HTTP Error Responses
        • 0030 - Use GitLab registry and Terraform state for ECS services
        • 0031 - Adopt DDD, Hexagonal Architecture, and CQRS for Python Domain Services
      • Work
        • Active Work
          • Work: Bba Microgrid Controller
          • Implementation Specification: BBA Microgrid Controller
          • BBA Microgrid Controller Deliverables (Stories)
          • Work: BFDev Monolithic Git
          • Challenge
          • Specification: BFDev Monolithic Git v2
          • BFDev Monolithic Git v2 Stories
          • Work: Complex Circuit Load Balancing
          • Implementation Specification: Complex Circuit Load Balancing
          • Complex Circuit Load Balancing Deliverables (Stories)
            • COR-10 and COR-11 Consolidation Review
          • Work: Dispatch Reliability and Reconciliation
          • Challenge
          • Specification: Dispatch Reliability and Reconciliation
          • Dispatch Reliability and Reconciliation (Unit User Stories)
            • Dispatch populated vehicle cards grey surface snapshot
            • Dispatch Visual Review
          • Work: Enable Scheduled Managed Charger Access
          • Challenge: Enable Scheduled Managed Charger Access
          • Specification Exploration Dossier: Enable Scheduled Managed Charger Access
          • Specification Review: Enable Scheduled Managed Charger Access
          • Specification: Enable Scheduled Managed Charger Access
          • Work: Guided Cut-Off and Release Orchestration
          • Specification: Guided Cut-Off and Release Orchestration
          • Guided Cut-Off and Release Orchestration (Unit User Stories)
          • Work: Production Deployment Validation
          • Challenge
          • Work: Scheduled Report Parity
          • Specification: Scheduled Report Parity
          • Work: Telematics
          • Telematics EventBridge Path
            • TLDR
            • Main Design Intent
            • Diagram
            • Step-By-Step Flow
            • Websocket Relationship
            • Boundary Rules
            • Why This Shape
          • Telematics Ingress Architecture
          • Specification: Telematics Migration into bf-manage-core with 5-Minute Freshness and Health Visibility
          • Telematics Core Migration MVP (Implementation-Time BDD)
          • Work: Vector Derms
          • Implementation Specification: Vector DERMS
          • Vector DERMS Deliverables (Stories)
          • Work: Visiting Vehicle Charging Visibility
          • Specification: Visiting Vehicle Charging Visibility
          • Visiting Vehicle Charging Visibility (Unit User Stories)
          • Work: Workspace Owned Stripe Roaming
          • Specification: Workspace-Owned Stripe Credentials for Roaming Payments
        • Backlog Work
          • Work: Microgrid
          • Microgrid Backlog Stories
          • Work: Mobile Ops Companion
          • Challenge
          • Specification: Mobile Operations Companion v1
          • Mobile Operations Companion Deliverables (Stories)
          • Work: Oscp
          • OSCP Backlog Stories
        • Archived Work
          • Work: Code Canonical Orchestration
          • Challenge
          • Specification: Product Engineering Workflow
          • Product Engineering Workflow Deliverables (Unit User Stories)
          • Work: Release Notes Automation
          • Release Plan: Release Notes Automation
          • Release Notes Automation Backlog Stories
      • Operations
      • Onboarding Runbook
        • Operations Runbooks
        • Production Hotfix Release
        • Staging Hotfix Release
        • Manage Staging Release Validation
        • Terraform Plan Dry Runs
        • Operations Tooling
        • Code Indexing
        • Operations Evidence
        • Database Restoration Test Report
      • Daily Operations Runbook
      • Testing Guide
      • Troubleshooting
    • TLDR
    • Main Design Intent
    • Diagram
    • Step-By-Step Flow
    • Websocket Relationship
    • Boundary Rules
    • Why This Shape
    1. Home
    2. Work
    3. Active
    4. Telematics

    Telematics EventBridge Path¶

    This note captures the intended scheduled polling path after the ownership change:

    • bf-manage-core owns EventBridge-triggered scheduling.
    • bf-manage-core owns scheduled provider polling tasks.
    • bf-telematics owns websocket runtime only.
    • Scheduled poll results and websocket-originated updates both land in the same core ingest/command handler.

    TLDR¶

    EventBridge
      -> bf-manage-core scheduled event processor
      -> bf-manage-core workspace poll runner
      -> bf-manage-core provider polling tasks
      -> canonical update payload
      -> shared core ingest / command handler
      -> validation against shared workspace state
      -> snapshot + event history persistence
      -> read APIs / health queries
    

    Main Design Intent¶

    • The scheduled poll path must not call bf-telematics.
    • Core should load workspace policy, cutover state, and device/provider registry data from shared SQL before running a poll cycle.
    • Provider poll responses should be normalized into the same canonical payload shape used by websocket ingress.
    • Core should apply one acceptance flow for both sources so validation, rejection, event history, and snapshot updates remain consistent.

    Diagram¶

    flowchart TD
      subgraph AWS["AWS / orchestration"]
        EB["EventBridge schedule"]
      end
    
      subgraph CORE_RUNTIME["bf-manage-core poll runtime"]
        SE["scheduled_events processor"]
        RUN["workspace poll runner"]
        STATE["load workspace policy<br/>cutover + device registry<br/>from shared SQL"]
        TASKS["provider polling tasks<br/>inside core"]
        EXT["provider HTTP APIs"]
        NORM["normalize provider response<br/>into canonical updates"]
      end
    
      subgraph TELEMATICS["bf-telematics websocket runtime"]
        WS["websocket connection manager"]
        WSN["normalize websocket message<br/>into same payload shape"]
      end
    
      subgraph CORE_CMD["bf-manage-core shared command path"]
        INGEST["shared core ingest / command handler"]
        VALIDATE["validate workspace/device identity<br/>against shared state"]
        UOW["unit of work"]
        SNAP["canonical snapshot store"]
        HIST["event history / event store"]
        OUT["read APIs / health queries"]
      end
    
      NOHOP["no scheduled poll hop<br/>through bf-telematics"]
    
      EB --> SE
      SE --> RUN
      RUN --> STATE
      RUN --> TASKS
      TASKS --> EXT
      EXT --> NORM
      STATE --> NORM
      NORM --> INGEST
    
      WS -. stream path only .-> WSN
      WSN -. same canonical payload .-> INGEST
    
      SE -. ownership note .-> NOHOP
    
      INGEST --> VALIDATE
      VALIDATE --> UOW
      UOW --> SNAP
      UOW --> HIST
      SNAP --> OUT
      HIST --> OUT

    Step-By-Step Flow¶

    1. EventBridge triggers the recurring workspace poll event.
    2. bf-manage-core scheduled event processing resolves the target workspace poll.
    3. Core loads workspace telematics policy, cutover state, and configured device/provider data from shared persistence.
    4. Core runs the appropriate provider polling task inside bf-manage-core.
    5. Provider responses are normalized into canonical telematics update payloads.
    6. Those payloads are submitted to the shared core ingest/command handler.
    7. Core validates workspace/device identity and applies the update transaction through the unit of work.
    8. Core persists canonical snapshot state and accepted update history.
    9. Read APIs and health queries use that persisted state as the source of truth.

    Websocket Relationship¶

    • bf-telematics still owns long-lived websocket connections and stream-specific buffering/coalescing.
    • Websocket-originated updates should be normalized into the same canonical payload shape as scheduled poll results.
    • After that normalization step, websocket updates should enter the same core ingest/command handler as EventBridge-triggered poll results.

    Boundary Rules¶

    • bf-manage-core is the owner of scheduled polling runtime.
    • bf-telematics is not part of the scheduled poll execution path.
    • bf-telematics remains an ingress adapter for websocket traffic.
    • The shared core ingest handler is the single acceptance point for canonical telematics updates.

    Why This Shape¶

    • It keeps EventBridge ownership and poll execution in the same service.
    • It removes an unnecessary cross-service hop for scheduled polling.
    • It prevents drift between websocket handling and scheduled poll handling.
    • It makes validation and persistence rules easier to keep consistent.
    Made with Material for MkDocs
    BFDev Docs Assistant
    New conversation?
    Ask one focused question at a time, this helps the assistant provide accurate answers about what's been implemented in BetterFleet.