← Back to home

Integration · John Deere Operations Center

John Deere + DirtFleet.

Operations Center stays the OEM telemetry source; DirtFleet handles the shop floor. OAuth flow is live in lib/integrations/john-deere — flip on with a click in /settings, no code on your end.

Why both

Operations Center is great at telematics. We're great at the shop floor.

John Deere Operations Center is the canonical surface for machine performance, location history, and utilization analytics — built by JD, owned by JD, deeply integrated with the OEM equipment. DirtFleet handles what Operations Center doesn't: maintenance scheduling, hour-based PM triggers, work-order queues for the mechanic shop, tool tracking, repair-log P&L by project. The two systems live in different parts of the workflow; the integration glues them together so you don't re-key data between them.

Pick a pattern

Operations Center direct, AEMP cross-OEM, or DTC routing.

  1. Pattern 1 — Operations Center OAuth + machine sync (live)

    The DirtFleet OAuth client for John Deere Operations Center is shipped (lib/integrations/john-deere). Authorize once, DirtFleet pulls your machine roster + engine-hours on a 15-minute polling cadence. Each new machine becomes an Asset; each hours reading writes a HoursLog.

    When to pick this

    If your fleet is heavy on JD iron (combines, sprayers, tractors, construction equipment) and you already use Operations Center for telematics + utilization tracking. The maintenance workflows live in DirtFleet; OC stays the OEM data source.

    Show the setup
    # Step-by-step from a customer perspective — no code on your end:
    #
    # 1. In DirtFleet:  /settings/integrations/john-deere-operations-center
    # 2. Click "Connect Operations Center" — redirects to JD's OAuth page
    # 3. Approve the requested scopes:
    #      - Read Machine Inventory  (so we can mirror your roster)
    #      - Read Machine Hours      (so we can sync engine hours)
    #      - (Optional) Read Service Codes  (for DTC routing — Pattern 3)
    # 4. JD redirects back; DirtFleet stores the refresh token encrypted
    # 5. Initial sync runs immediately — typically completes in 1-3 minutes
    #    for a 50-machine fleet
    # 6. Subsequent polls run every 15 minutes; each one is a delta-only
    #    upsert so the API call cost stays flat
  2. Pattern 2 — AEMP-generic fallback (covers OEM brands beyond JD)

    DirtFleet also speaks the AEMP (Association of Equipment Management Professionals) telematics XML standard, which is the de-facto cross-vendor protocol for off-road equipment. If you have JD + Cat + Komatsu in the same fleet, the AEMP feed normalizes them all.

    When to pick this

    Mixed-OEM fleets that don't want one integration per brand. AEMP gives you a single endpoint per OEM that all return the same XML shape; DirtFleet's AEMP adapter parses it identically regardless of source.

    Show the setup
    # Each OEM has its own AEMP endpoint; the data shape is the same.
    # DirtFleet stores the credentials at /settings/integrations/aemp and
    # polls each registered endpoint on a 30-minute cadence.
    #
    # What we receive (from any AEMP source):
    #   <Fleet>
    #     <Equipment>
    #       <SerialNumber>...</SerialNumber>
    #       <Make>...</Make>
    #       <Model>...</Model>
    #       <CumulativeHours>...</CumulativeHours>
    #       <Location><Latitude>...</Latitude>...</Location>
    #       <Odometer>...</Odometer>
    #     </Equipment>
    #   </Fleet>
    #
    # What we do with it:
    #   - SerialNumber → Asset.serial (matched 1:1)
    #   - Make+Model   → equipmentSnapshot JSON
    #   - CumulativeHours → HoursLog (deltas only)
    #   - Location     → optional yard reassignment if a yard sits within 200m
    #
    # AEMP is documented at https://aemp.org/standards/.
    # OEMs that publish: JD, Cat, Komatsu, Hitachi, Volvo CE, Doosan,
    # Bobcat, Bell, Bell-Hyundai, etc.
  3. Pattern 3 — JD DTC routing (roadmap)

    Operations Center surfaces Service Advisor codes from the machine's CAN bus. DirtFleet's DTC-narrative AI translates the code into plain English and creates a YELLOW flag with context already attached — same shape as the Samsara DTC routing.

    When to pick this

    Operations that want pre-triaged shop alerts. Mechanic gets the code + a paragraph explanation + likely cause + suggested next step before they walk to the machine.

    Show the setup
    # Status: Roadmap — gated on activating customer.
    #
    # The AI narrative pipeline is shipped (lib/ai-dtc-narrative.ts;
    # used today by drivers logging DTCs manually). The OC webhook
    # subscription + automated flag creation is the wiring not yet
    # in place; the OC OAuth scope is the dependency (re-prompt the
    # customer if they didn't grant Read Service Codes initially).
    #
    # Once active, the flow is:
    #   1. JD Operations Center sends a Service Advisor event webhook
    #   2. DirtFleet authenticates the event signature
    #   3. AI narrative generates the human-readable context
    #   4. We post a YELLOW flag with the narrative + machine reference
    #   5. Mechanic dashboard sorts it by urgency and surfaces in queue
    #
    # Email hello@dirtfleet.app to be the first OEM-routing customer.

Honest scope

What we don't do.

  • Bidirectional sync. Operations Center → DirtFleet is one-way. Maintenance state lives in DirtFleet; the OC view stays read-only from our side.
  • Operator/yield analytics. Stays in Operations Center. That's the precision-ag domain we're not in.
  • Real-time location streaming. 15-minute polling is sufficient for maintenance triggers; sub-minute location is OC's product.

Pairs with

Cross-OEM mixed fleets

See also /integrations/samsara (on-road) and /integrations/geotab (mixed). For mixed-OEM off-road fleets (JD + Cat + Komatsu), the AEMP fallback (Pattern 2 here) is the right single-integration path.

Already have an Operations Center account? Connect at /settings/integrations once signed up. Or email hello@dirtfleet.app for a hands-on activation.