{"record":{"id":"42c41294244e8c52","repo":"pentaho/pentaho-kettle","slug":"unhandled-transformation-type-transformationtype","errorCode":null,"errorMessage":"Unhandled transformation type: ${transformationType}","messagePattern":"Unhandled transformation type: (.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/Trans.java","lineNumber":999,"sourceCode":"                Boolean batchingRowSet =\n                  ValueMetaString.convertStringToBoolean( System.getProperty( Const.KETTLE_BATCHING_ROWSET ) );\n                if ( batchingRowSet != null && batchingRowSet.booleanValue() ) {\n                  rowSet = new BlockingBatchingRowSet( transMeta.getSizeRowset() );\n                } else {\n                  rowSet = new BlockingRowSet( transMeta.getSizeRowset() );\n                }\n                break;\n\n              case SerialSingleThreaded:\n                rowSet = new SingleRowRowSet();\n                break;\n\n              case SingleThreaded:\n                rowSet = new QueueRowSet();\n                break;\n\n              default:\n                throw new KettleException( \"Unhandled transformation type: \" + transMeta.getTransformationType() );\n            }\n\n            switch ( dispatchType ) {\n              case TYPE_DISP_1_1:\n                rowSet.setThreadNameFromToCopy( thisStep.getName(), 0, nextStep.getName(), 0 );\n                break;\n              case TYPE_DISP_1_N:\n                rowSet.setThreadNameFromToCopy( thisStep.getName(), 0, nextStep.getName(), c );\n                break;\n              case TYPE_DISP_N_1:\n                rowSet.setThreadNameFromToCopy( thisStep.getName(), c, nextStep.getName(), 0 );\n                break;\n              case TYPE_DISP_N_N:\n                rowSet.setThreadNameFromToCopy( thisStep.getName(), c, nextStep.getName(), c );\n                break;\n              default:\n                break;\n            }","sourceCodeStart":981,"sourceCodeEnd":1017,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/Trans.java#L981-L1017","documentation":"When allocating row sets for step hop dispatch, Trans switches on transMeta.getTransformationType(). Only Normal, SerialSingleThreaded (implicitly handled) and SingleThreaded have cases; any other/unhandled TransformationType falls to default and throws this KettleException.","triggerScenarios":"TransformationType enum containing a value not covered by the switch in Trans.prepareExecution — e.g. a new enum constant introduced by a plugin or a newer PDI format, or a corrupted transformationType in the KTR XML.","commonSituations":"Opening a KTR produced by a newer Pentaho version that defines a new transformation type in an older engine; programmatic construction with a custom/unexpected type; XML with invalid transformation_type attribute mapping.","solutions":["Upgrade the Kettle/PDI engine to a version supporting the transformation type in the file","Re-save the transformation in a compatible Spoon version to normalize the type to Normal","Check the <trans_type> element in the KTR XML and set it to 'Normal'"],"exampleFix":"// before (KTR XML)\n<trans_type>UnusualType</trans_type>\n// after\n<trans_type>Normal</trans_type>","handlingStrategy":"try-catch","validationCode":"TransformationType type = transMeta.getTransformationType();\nif (type != TransformationType.Normal && type != TransformationType.SingleThreaded && type != TransformationType.SerialSingleThreaded) {\n  throw new IllegalStateException(\"Unsupported transformation type: \" + type);\n}","typeGuard":null,"tryCatchPattern":"try { trans.prepareExecution(); } catch (KettleException e) { if (e.getMessage().startsWith(\"Unhandled transformation type\")) { /* upgrade or re-save KTR */ } throw e; }","preventionTips":["Open and re-save KTR files with a compatible Spoon version after upgrades","Never hand-edit trans_type in KTR XML","Keep engine and Spoon versions aligned"],"tags":["kettle","transformation-type","enum"],"backgroundTag":"invalid-enum-value","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}