{"record":{"id":"e1a6079e6730e098","repo":"pentaho/pentaho-kettle","slug":"webservices-exception-operarationnotsupported","errorCode":"WebServices.Exception.OperarationNotSupported","errorMessage":"WebServices.Exception.OperarationNotSupported","messagePattern":"WebServices\\.Exception\\.OperarationNotSupported","errorType":"error_code","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/webservices/WebService.java","lineNumber":435,"sourceCode":"      return;\n    }\n    cachedMeta = meta;\n\n    try {\n      cachedWsdl = new Wsdl( new java.net.URI( data.realUrl ), null, null, environmentSubstitute( meta.getHttpLogin() ),\n        Encr.decryptPasswordOptionallyEncrypted( environmentSubstitute( meta.getHttpPassword() ) ) );\n    } catch ( Exception e ) {\n      throw new KettleStepException( BaseMessages.getString( PKG, \"WebServices.ERROR0013.ExceptionLoadingWSDL\" ), e );\n    }\n\n    cachedURLService = cachedWsdl.getServiceEndpoint();\n    cachedHostConfiguration = HttpClientContext.create();\n    cachedHttpClient = getHttpClient( cachedHostConfiguration );\n    // Generate the XML to send over, determine the correct name for the request...\n    //\n    cachedOperation = cachedWsdl.getOperation( meta.getOperationName() );\n    if ( cachedOperation == null ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"WebServices.Exception.OperarationNotSupported\", meta\n        .getOperationName(), meta.getUrl() ) );\n    }\n\n  }\n\n  static String getLocationFrom( HttpPost method ) {\n    Header locationHeader = method.getFirstHeader( \"Location\" );\n    return locationHeader.getValue();\n  }\n\n  HttpPost getHttpMethod( String vURLService ) throws URISyntaxException {\n    URIBuilder uriBuilder = new URIBuilder( vURLService );\n    HttpPost vHttpMethod = new HttpPost( uriBuilder.build() );\n\n    vHttpMethod.setHeader( \"Content-Type\", \"text/xml;charset=UTF-8\" );\n\n    String soapAction = \"\\\"\" + meta.getOperationNamespace();\n    if ( !meta.getOperationNamespace().endsWith( \"/\" ) ) {","sourceCodeStart":417,"sourceCodeEnd":453,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/webservices/WebService.java#L417-L453","documentation":"KettleException thrown by WebService.initWsdlEnv when cachedWsdl.getOperation(meta.getOperationName()) returns null, i.e. the WSDL loaded successfully but does not define an operation with the configured name. The step cannot build a SOAP request for a nonexistent operation and fails fast.","triggerScenarios":"requestSOAP -> initWsdlEnv, after WSDL load: meta.getOperationName() does not match any operation in the fetched WSDL (typo, renamed service, wrong WSDL version, or stale saved transformation).","commonSituations":"Server upgraded and the operation was renamed or moved to a different WSDL; developer hand-typed the operation name; transformation built against a test WSDL but pointed at production with different operations; WSDL fetched conditionally returns a different service than expected.","solutions":["Click 'Get operations' in the Web Services step dialog (or call cachedWsdl.getOperation(...) in a probe) to list valid operation names and pick the exact one.","Verify the URL serves the WSDL you expect and not a different service/version.","Re-save the transformation after updating the operation name in the step metadata.","If the operation was removed server-side, migrate to the replacement operation or restore the old service contract."],"exampleFix":"// before\nmeta.setOperationName(\"getCustomerRecord\"); // WSDL defines getCustomer\n// after\nmeta.setOperationName(\"getCustomer\"); // matches WSDL operation","handlingStrategy":"validation","validationCode":"// Confirm the operation exists before running:\nWsdl wsdl = new Wsdl(new java.net.URI(wsdlUrl), null, null, login, pass);\nif (wsdl.getOperation(operationName) == null) {\n  throw new IllegalArgumentException(\"Operation not in WSDL: \" + operationName);\n}","typeGuard":null,"tryCatchPattern":"try {\n  // run transformation\n} catch (KettleException e) {\n  if (e.getMessage() != null && e.getMessage().contains(\"OperarationNotSupported\")) {\n    // re-list WSDL operations and correct the step's operation name\n  }\n}","preventionTips":["Always use the step dialog's 'Get operations' button instead of typing names.","Re-verify operation names after any WSDL/service upgrade.","Keep test and production transformations pointing at their matching WSDL versions."],"tags":["kettle","webservice","wsdl","configuration"],"backgroundTag":"unsupported-operation","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"}