Import job history from previous system?

We're evaluating FieldPulse as part of a broader platform consolidation. One requirement from our executive team is maintaining continuity of service history for active customer accounts. Our current system contains approximately 18,000 completed work orders across five years of operation. Are there established pathways to migrate this historical data into FieldPulse, or is the expectation that we begin with a clean slate? I am specifically interested in whether the API supports bulk work order creation with historical dates, or if a managed migration service is available through FieldPulse Professional Services.
  • Keiko, this is something we encounter frequently in my experience with mid-market implementations. What I typically recommend is a tiered approach rather than attempting a full historical import into active work order tables.

    In my experience, the API does support backdated work order creation — the created_at and completed_at timestamps can be specified during POST, though there are some guardrails. The system will flag orders with dates predating your FieldPulse account creation for audit purposes, which is generally fine but worth noting for compliance reporting.

    However, what I typically recommend is segmenting your migration strategy. For the full 18,000 records, consider whether all of this needs to live in the operational work order system versus a reference archive. In my experience, teams that import everything often find the noise-to-signal ratio problematic — technicians searching for relevant history get buried in outdated formats and incomplete records from legacy systems.

    What I typically recommend: import active warranties, unresolved callbacks, and customers with service agreements within the last 24 months as full work orders. For the remainder, the API supports a bulk customer import with custom fields that can hold legacy reference IDs, allowing you to link to external archives without polluting your operational dashboard.

    From a governance perspective, you'll want to validate timestamp formats — we've seen issues where legacy systems used non-standard datetime strings that the API accepted but rendered incorrectly in reporting. If you're interested, I can connect you with our Professional Services team for a scoping call on the managed migration path.
  • Hi Keiko! So glad you're considering FieldPulse — we want to make sure you're set up for success with this transition. I wanted to jump in and offer my support as your account gets closer to launch.

    Daniel covered the technical pathways really well, and I want to make sure you feel confident about the approach that works best for your team's needs. We absolutely see customers in your situation, and the good news is that you have options. Whether that's leveraging our API capabilities, working with Professional Services on a comprehensive migration, or adopting a hybrid strategy, we want this to feel manageable rather than overwhelming.

    I'd love to schedule some time to walk through your specific data structure and make sure we're aligning on what success looks like for your executive stakeholders. I'll send you a note directly with some available times, and we can also discuss whether early access to our sandbox environment would help your team validate the approach before committing.

    Please don't hesitate to reach out if questions come up as you're evaluating — we're here to partner with you on getting this right.
  • Keiko — worth noting a few edge cases that can derail historical migrations, particularly around referential integrity.

    1. Technician attribution: Historical work orders will need to map to user accounts in FieldPulse. If your previous system allowed free-text technician names (e.g., "Mike" vs. "Michael"), you'll need to normalize these before import, as the API enforces foreign key constraints on assigned technician IDs.

    2. Status mapping: FieldPulse's work order state machine has specific terminal states (Completed, Cancelled, Invoiced). Legacy systems with custom status values (e.g., "Billed — awaiting payment") will need translation. The API rejects unrecognised enumeration values.

    3. Attachment handling: If your 18,000 records include photos, PDFs, or signatures, the bulk API has a separate ingestion path for binary objects. Attempting to base64-encode large attachments into the work order payload will hit payload size limits (10MB per request).

    4. Idempotency: For 18,000 records, you'll want to implement client-side idempotency keys. The API does not natively deduplicate on legacy IDs, so retry logic after partial failures can create duplicates.

    From a failure mode perspective, I recommend validating a representative sample (perhaps 1% stratified by year and job type) before committing to the full migration. This exposes schema mismatches early.

    It is worth noting that FieldPulse's audit log will attribute all imported records to the API key owner unless you specify created_by_user_id — worth considering for compliance traceability.
  • Just did something similar last quarter — ~12k records from a legacy system that shall remain nameless (it was bad).

    YMMV on the API backdating approach. We found that while the timestamps stick, some of the reporting calculations (e.g., average job duration, time-to-invoice) got weird because FieldPulse also captures system timestamps for when the record was actually created in FieldPulse, not just the job date. So your historical analytics won't match if you're not careful about which date fields reports are using.

    Heads up: there's no bulk delete via API if you mess up the import. We learned this the hard way. Had to engage support to clean up a test run that went sideways.

    Worth noting: the Professional Services quote we got was... not trivial. We ended up writing our own ETL with Python + the bulk endpoints. Took about two dev-weeks, but we had control over the data mapping. If you've got technical resources in-house, that's worth considering.

    Also — this thread on API rate limits has some good context on throughput for bulk creation. The 429 backoff logic matters when you're talking thousands of records.
  • Devon — the reporting timestamp issue is particularly relevant. Our board reviews job profitability metrics monthly, and I cannot have bifurcated data sets creating confusion. Are you saying the operational reports pull from system creation date rather than job completion date by default? This would affect our transition quarter comparables.
  • It's configurable per report, but yeah — default is system timestamp. You can override with date range filters on the job date fields, but you have to know to do it. We ended up documenting this heavily for our ops team so they didn't accidentally compare Q1 "FieldPulse jobs" against Q1 "all jobs" and wonder why revenue looked down.

    If you're doing board reporting, I'd validate your key reports in sandbox with a small historical sample before you commit. The custom report builder lets you choose which date field drives the period grouping, but not all the canned reports do.
  • Keiko — from a governance perspective, I would raise two additional considerations for your executive team's deliberation.

    Data Retention and Legal Hold: Before migrating five years of operational history, confirm your legal team's requirements regarding record retention. FieldPulse's default data retention policy (documented in the Data Retention settings) may differ from your current system's archival rules. It is worth noting that imported historical records are subject to the same retention and deletion policies as natively created records — there is no "grandfathered" status for migrated data.

    Audit Trail Continuity: Your current system's audit history (who changed what, when) will not transfer via API. FieldPulse will record the import event itself, but the granular change history from your legacy platform will be lost. From a compliance perspective, consider whether you need to maintain the source system in read-only mode for a defined period to preserve that chain of custody.

    Access Control Implications: Historical work orders will inherit the visibility rules of your current FieldPulse permission structure. If your previous system had different confidentiality models (e.g., technicians could only see their own history), verify that FieldPulse's role-based access can replicate this, or plan for a communication strategy if visibility expands.

    I would recommend documenting the migration's scope and any intentional data loss (audit trails, attachment metadata, etc.) for your risk register.
  • Keiko, happy to help clarify the official pathways here!

    Daniel and Omar have covered the technical implementation well. From FieldPulse's side, we offer three migration tiers:

    1. Self-Service API (no cost)
    Full documentation at Using the FieldPulse API. Best for teams with developer resources comfortable with ETL processes.

    2. Assisted Migration (Professional Services)
    Scoping call → data mapping document → validation environment → production import. Typical engagements for 15–25k records run 2–3 weeks calendar time. This includes the backdated work order creation Omar described, with validation of technician mapping and status translation.

    3. Hybrid Reference Import (often recommended)
    Active customers + open jobs + 24 months of completed history as full work orders. Remainder as customer notes with legacy reference IDs. This preserves operational continuity without overwhelming your team's day-to-day interface.

    A few specifics on your API question: the POST /work_orders endpoint accepts scheduled_date, started_at, and completed_at in ISO 8601 format with no restriction on historical dates. The system will flag these in audit logs with import attribution as Omar noted.

    I'd be glad to connect you with our Professional Services team for a proper scoping discussion — just let me know your preference. Either way, we want to make sure your transition supports rather than disrupts your operational reporting needs.