Troubleshoot the Pentaho (PDI) importer
Import from PDI… is not in the File menu
The plugin is not where Hop looks for it. Check that <hop>/plugins/misc/importers/ holds the
importer's jar, that you unzipped into the Hop folder and not into a sub-folder, and that you run
Hop 2.20.0 or later.
The import says Apache Hop's Kettle import is not installed
The PDI importer runs Hop's own Kettle import, in <hop>/plugins/misc/import. A Hop installation
built without it, or with that folder removed, cannot convert PDI files. Use a complete Hop
installation.
hop-import says the input folder doesn't exist
hop-import.sh runs from the Hop folder, so a relative path points inside it. Give -i and -o
as full paths, for example "$PWD/pdi-project".
The import finds no files
The importer reads .ktr and .kjb files. Check that the input folder holds them and that they are
not in hidden folders (skipped by default). With -f, only the input folder itself is read. A PDI
repository is not read: export it to files first.
A file is under Files without a converted file
The Kettle import wrote no pipeline or workflow for it, so the classifier had nothing to compare. If the file was already in the output folder, it was skipped: import again into an empty folder, or turn off skipping existing target files. Otherwise, the import log says why the file failed.
Files are not found
-
${Internal.Pipeline.Filename.Folder}in the path. Hop 2.20.0's Kettle import renames PDI's${Internal.Transformation.Filename.Directory}to${Internal.Pipeline.Filename.Folder}, which Hop does not set; Hop's variable is${Internal.Pipeline.Filename.Directory}. Replace it in every converted file:find <output> \( -name '*.hpl' -o -name '*.hwf' \) -exec \
perl -pi -e 's/Internal\.Pipeline\.Filename\.Folder/Internal.Pipeline.Filename.Directory/g' {} +${Internal.Workflow.Filename.Folder}and${Internal.Entry.Current.Folder}are Hop's own names and work as they are. -
Hard-coded paths. Drive letters, shares and absolute paths are carried over as they are. The audit lists them as Hard-coded file paths; move them into variables of the environment.
-
A value changed from
.ktrto.hpl. The import replaces.ktrand.kjbin all text of a file, so a URL, a constant or a file name pattern that should keep them changes too. The report flags the step names it changed; check the values yourself.
A step opens as a missing plugin
Hop has no plugin with the step's type id. The report lists it as UNSUPPORTED or MANUAL, with what
to do. For Excel Output, LDIF Input, Mail Validator, Syslog and MQTT, a separate plugin exists:
install it in every Hop that runs the project, and the report counts them as AUTO the next time.
Edi to XML exists in Hop as TypeExitEdi2XmlTransform, but the import keeps PDI's id: change the
type in the .hpl file, or add the transform again.
A User Defined Java Class or a script does not compile
It still calls the Pentaho API: org.pentaho.di classes, StepMetaInterface, or, in JavaScript,
_step_, getTrans() and getTransMeta(). The report lists each one as MANUAL. Port it to Hop's
API (org.apache.hop, _transform_, getPipeline()) and test it on sample rows.
A connection does not connect
See Finish connections and passwords: no password survives
the import, JNDI connections need a URL, and drivers Hop does not ship go in <hop>/lib/jdbc.
Variables are empty
The values came from kettle.properties, the scheduler or the command line. Import with -k and
-c to write kettle.properties to an environment file, and run with that environment; see
Import into a Hop project. The audit lists
the variables no file defines.
Nothing is logged to the log tables
The import leaves PDI's transformation, step and job log tables out. Log with Hop's Pipeline Log and Workflow Log, or with execution information, and move the reports that read the old tables.
Why and how to move, and how we help: Migrations to Apache Hop, and from Pentaho PDI in particular.