A practical migration plan for moving Pentaho PDI and Kettle jobs to Bruin. The Bruin team can help with onboarding and migration planning for ingestr, SQL/Python assets, quality checks, DAC dashboards, MCP, and AI analytics.
Arsalan Noorafkan
Developer Advocate
Migrating from Pentaho is rarely a clean "old tool out, new tool in" project.
It is usually more awkward than that. You have PDI jobs that have been edited for years, Spoon transformations that nobody wants to touch, scheduled flows that write into reporting tables, a few custom scripts nearby, and at least one downstream dashboard that finance will notice if it breaks.
If you are evaluating alternatives to an older Pentaho estate, the Bruin team can help with onboarding and migration planning so the first pass focuses on inventory, mapping, parity checks, and a realistic cutover plan instead of a blank-page rewrite.
So the migration plan needs to be boring.
Not heroic. Not a six-month rewrite. Boring.
The goal is to move one flow at a time from Pentaho Data Integration or Kettle into Bruin, prove the output, add governance that probably did not exist before, and only then retire the old job.
This sounds obvious, but it is where most migrations fail. Teams convert the easy transformations and miss the hidden business rule that was sitting in a filter step from 2018.
For custom sources, use Python materialization instead. This is where Bruin is useful for old enterprise systems that do not fit a neat connector catalogue.
Most Pentaho transformations become SQL. Joins, filters, aggregations, date logic, standardization, deduplication, and reporting tables are usually clearer in SQL than in a visual canvas.
/* @bruin
name: marts.daily_revenue
type: sf.sql
depends:
- raw.postgres_orders
owner: finance-analytics
materialization:
type: table
meta:
tier: gold
migrated_from: pentaho
columns:
- name: revenue_date
type: date
checks:
- name: not_null
- name: order_count
type: integer
checks:
- name: non_negative
- name: gross_revenue
type: float
checks:
- name: non_negative
@bruin
*/
SELECT
DATE_TRUNC('day', created_at) AS revenue_date,
SUM(amount) AS gross_revenue,
COUNT(*) AS order_count
FROM raw.postgres_orders
WHERE status = 'completed'
GROUP BY 1
Use Python when the logic is actually Python-shaped: custom API calls, ML scoring, fuzzy matching, file parsing, complicated enrichment, or a proprietary library that already exists in your company.
The mistake is forcing everything into one language. Bruin lets SQL and Python depend on each other, so use the right tool for each part.
This is the point of migrating to Bruin instead of just another ETL tool. The pipeline should say what healthy means.
Pentaho migration
Planning a Pentaho migration?
Tell us what your PDI jobs look like. The Bruin team can help separate the easy source moves, SQL rewrites, Python materializations, checks, MCP access, and DAC dashboards before cutover.
Parallel runs are non-negotiable for anything important.
Compare:
Row counts by table
Freshness timestamps
Null rates on key fields
Primary key uniqueness
Aggregated metrics by day, region, product, customer segment, or whatever matters
Downstream dashboard numbers
Runtime and failure frequency
You are looking for two kinds of differences.
First, migration bugs. Maybe a filter moved incorrectly. Maybe a lookup joined on the wrong key. Fix those.
Second, old bugs. This is awkward, but it happens. You may discover the Pentaho job was wrong and everyone got used to the wrong output. Do not hide that. Write it down, get the business owner to approve the corrected logic, and add a check so it does not come back.
Bruin CLI and ingestr handle the developer workflow. Bruin Cloud adds the enterprise layer:
Scheduling and orchestration
Run history and observability
Catalog and lineage
Asset tiers and meta-keys
SSO and RBAC
Audit logs
Cost visibility
DAC dashboards
MCP access for governed cloud operations from supported assistants
AI data analyst workflows in Slack, Microsoft Teams, browser, and other channels
This is the part many Pentaho migrations miss. They move ETL logic but do not improve governance. Then six months later they have the same operational mess in a newer tool.
Migrating from Pentaho to Bruin is not about making old jobs look modern. It is about making the data platform easier to understand, safer to change, and useful for AI-driven analysis.
Start with one flow. Preserve the business logic. Add checks. Prove parity. Then expand.