Agentic Data Platform Migration using Wire, Claude Code and Rittman Analytics

    markrittman
    BigQuery
    Data Engineering
    Modern Data Stack

    Migrating an entire analytics platform including the data warehouse, data source extractions, semantic layer, BI reports, orchestration and reverse ETL syncs from one stack to another used to be the kind of project you hoped wouldn’t land while you were on the bench, because there was every chance you’d be asked to lead it.

    Large-scale data platform migrations are less about writing SQL than managing risk. Thousands of models, connectors, orchestration workflows, semantic objects, dashboards and reverse ETL syncs all need to be tracked, migrated, regression tested and reassembled into a platform that behaves exactly like the one it replaces. It’s the kind of work many engineers see as a chore rather than an opportunity to innovate, usually delivered under fixed-price contracts where keeping to the timetable and proving every change through exhaustive testing matters far more than moving fast or trying something new.

    A typical analytics platform you’d be asked to migrate would have one or more ingestion pipelines using technology such as Fivetran, Stitch or homegrown python scripts, loading data into a Snowflake data warehouse built-around a medallion-style architecture. Data transformations would be handled by dbt, orchestrated using dbt Cloud and data then synced into downstream CRM or other SaaS applications using reverse ETL technology such as Census or Hightouch.

    The Perfect Use-Case for Agentic Delivery

    Whilst a complex and thankless task for us humans to work-on, these types of projects are however a perfect use-case for AI-based agentic coding tools such as Rittman Analytics’ Wire Framework.

    Why? Because unlike building a whole new platform or user application where users’ requirements can be interpreted in many ways and there’s no one “correct” answer to what they want, a data platform migration in the end just works, or it doesn’t. All of the individual Fivetran ingestions, dbt models, reports and reverse ETL syncs either provide the same output as before, or they’re defective and if they’re the latter, a coding agent can just fix and iterate and fix until it does get that same output, and then all of these migrated items outputting the same results as the originals adds-up to a completely migrated platform that’s functionally-identical to the one it’s replacing.

    And if there are tens, hundreds or thousands of these dbt models, reports or other migration inventory item to individually translate, test for equivalence and pass for migration, then technologies such as Claude Code’s sub-agents can chunk the work up into batches and parallel work streams, with your main Claude code agent orchestrating the process and reporting back to you when everything is done.

    The Wire Framework is Rittman Analytics’ AI-accelerated delivery system for data platform engagements. It uses Claude Code (Anthropic) or Gemini CLI (Google) as its runtime and encodes 20+ years of our data engineering and platform migration methodology as structured, executable agentic workflow specifications.

    Instead of one of our consultants’ manually writing dbt models, LookML, pipeline code or in this case, translated dbt models over several weeks, Wire directs the AI coding agent to produce all of these artefacts in a fraction of the time with embedded quality gates ensuring the output meets our standards. You can read more about Wire and our approach to agentic project delivery at:

    Wire Framework in action : Agentic Data Platform Migration

    Taking the platform migration described earlier, the first stage in delivering it is to audit, assess and catalog all of the (typically, thousands of) items across all of the different platform layers that require migration. As, however, each individual layer’s audit are independent of the others and only depend on each other once the results are being assembled, Wire dispatches one agent per layer and runs them concurrently, each grounded via an MCP connection to the live system rather than working from technical docs that’s are most-probably out-of-date and unreliable.

    The Wire command db-object-audit-generate, for example, then opens a connection through the Snowflake MCP server using the account, role, and warehouse provided by the client and works through the layer methodically: every schema and database, every table and view with its size and row count, every stored procedure and UDF, every masking policy and its tagged columns and the full RBAC graph of roles and grants.

    Similarly, the security-audit-generate command runs against the same connection but asks a different set of questions, which roles hold which grants, which columns carry PII tags, and its findings later determine which IAM bindings and BigQuery policy tags target-setup creates.

    Once the inventory exists, every object gets a row in a migration register with an explicit state: pending, translated, deferred, migrated, failed. For dbt models specifically, the dbt audit also assigns a complexity tier: trivial, low, medium, high, or blocked.

    Translation as a parallel pass/fail, iterate-until-correct loop

    As I said before, SQL dialect translation has a property most coding tasks don’t: the correctness of the answer can be checked mechanically. Translate a model, build it on the target platform and then check it against the source for row count within tolerance, schema match, a value spot-check, freshness lag and dbt test results.

    /wire:equivalency-validate lift-and-shift --wave b2
    
    Wave b2: 41 models: 38 PASS, 2 FAIL (source-side backfill gap, not a defect),
    1 FAIL (fct_revenue: NULL handling divergence)
    
    /wire:equivalency-investigate lift-and-shift fct_revenue
    > unique_key is an expression; Snowflake's adapter accepts it, BigQuery's does not
    
    /wire:equivalency-fix lift-and-shift fct_revenue
    > added dbt_utils.generate_surrogate_key(), updated unique_key config, re-validated: PASS
    
    
    
    
    
    

    A failing check identifies a specific, fixable cause rather than stopping the process: equivalency-investigate diagnoses the root cause and equivalency-fix applies a correction and reruns the check. Because each model’s correctness is independent of its neighbours, that translate-build-check-fix loop runs across dozens of models concurrently rather than one at a time.

    Moreover, as each model’s translation, build, and equivalence check is self-contained, at full scale Wire fans a batch-out across many identical Claude Code sub-agents running the same loop concurrently, each working its own slice of the queue against the same dialect rules and the same acceptance criteria:

    /wire:dbt-migration-generate lift-and-shift --wave b5

    Wave b5: 231 models queued, 30 parallel agent chunks (~8 models each)
    204 PASS (translated, built, equivalence-checked clean)
    19 deferred (pending ingestion credentials)
    8 deferred (upstream dependency not yet built)

    Our methodology embeds AI into every stage of the data platform migration lifecycle, while keeping your expert team in complete control. Using Wire, Rittman Analytics and Claude Code AI-powered coding technology, a data platform migration that might otherwise have tied-up most of your data team for months can now be delivered in collaboration with us within weeks, freeing them for higher-value tasks now and accelerating the date when they’ll be able to start innovating on your new platform investment.

    Interested? Find Out More!

    Rittman Analytics is a boutique data analytics consultancy that helps ambitious, digital-native businesses scale-up their approach to data, analytics and generative AI.

    We’re authorised delivery partners for Google Cloud along with Oracle, Segment, Cube, Dagster, Preset, dbt Labs and Fivetran and are experts at helping you design an analytics solution that’s right for your organisation’s needs, use-cases and budget and working with you and your data team to successfully implement it.

    If you’re looking for some help and assistance with your AI initiative or would just like to talk shop and share ideas and thoughts on what’s going on in your organisation and the wider data analytics world, contact us now to organise a 100%-free, no-obligation call — we’d love to hear from you!

    Share: