Stepping up from a single transformation: designing a job to orchestrate many steps, using control steps like Start, Transformation, Shell, FTP, and Email, managing success and failure flows, and scheduling execution with Kitchen and cron.

In episode 4 you built a single transformation that processes one data flow. In the real world, ETL work is never that simple: data must be pulled from several sources in sequence, loaded after other processes finish, and reported to the team by email. This is where jobs come in.
A job is an orchestrator. It doesn't process rows of data; it manages when and in what order transformations and other steps run, including what happens when one step fails. This episode will teach you how to design reliable jobs.
Before building a job, recall the division of roles covered in episode 2:
A job always starts from the START step and runs other job entries sequentially or conditionally. The difference from transformations: hops in a job don't carry data, only success or failure status.
Create a new job in Spoon via File > New > Job. You'll see a canvas with a Job entries palette that differs from the transformation step palette.
Some job entries are the backbone of orchestration. Get to know them now:
.ktr file. This is the most used entry.mv or calling external programs.The most common chain: START to the first Transformation, then to the next transformation, then to Email at the end. Let's build it.
Follow these steps to assemble a simple job: pull data from CSV, load it into the database, archive the source file, then send a notification.
csv_to_db.ktr file you created in episode 4.processed/ folder.ETL complete and the team's email address.It will look like the following scheme:
START -> csv_to_db.ktr -> Move files -> EmailNow save it as etl_daily.kjb in the jobs folder. Before running it fully, learn how flow control works in the next section.
A job's strength lies in its ability to make decisions based on results. There are several patterns you must master:
The classic pattern most often used in production:
To create a failure hop, click and hold the line from an entry then select Fail in the hop options. Note that failure hop icons are red, success hops are green, and evaluation hops are blue — these colors help you read a job design quickly.
Info
Don't underestimate the Simple evaluation job entry. By checking the row count of a transformation's result — for example through Get variables or a query result — you can stop the pipeline early if the data is empty or suspicious, long before wrong data reaches the warehouse.
Just as Pan runs transformations, Kitchen is the command-line job runner. This is the command you'll use millions of times in real-world work:
kitchen.sh -file=/home/kalian/lab/jobs/etl_daily.kjbAdd useful options: -level=Detailed for more detailed logs, -param:NAMA=value to pass parameters, and -logfile=/path/etl_daily.log to write logs to a file. Logging to a file matters because when a job runs automatically in cron, there's no screen to read the output.
A reliable job must run automatically. On Linux, the simplest way is cron. Open the crontab with crontab -e then add the following line to run the job every day at 02:00:
0 2 * * * /home/kalian/lab/pdi-ce/kitchen.sh -file=/home/kalian/lab/jobs/etl_daily.kjb -level=Basic -logfile=/var/log/etl_daily.logDanger
In cron, JAVA_HOME is often not loaded, so Kitchen fails to find Java. The standard fix: at the top of the crontab, set JAVA_HOME=/path/to/jdk and a complete PATH, or write a wrapper script that exports those variables before calling kitchen.sh. Test first by running the cron manually.
For more centralized scheduling needs — schedule dashboards, retries, notifications — episode 10 will introduce the Pentaho Server with its much more complete Scheduler. For now, cron is enough to understand the concept of automation.
In episode 5 you designed your first job: getting to know popular job entries like START, Transformation, Shell, FTP, and Email; managing success, failure, and evaluation flow control; running jobs with Kitchen; and scheduling them with cron.
The key takeaways:
In episode 6, we dive into data quality: data quality & transformation patterns — validation, lookup, cleansing, normalization, handling missing values, deduplication, aggregation, and healthy transformation patterns.