flowable/flowable-engine · error · FlowableException
Error importing ' ' as ' ' (import location, import type)
Error message
Error importing '%s' as '%s' (import location, import type)
What it means
While scanning WSDL imports during process-definition parsing, Flowable instantiates a WSDL importer for each import. If importing the WSDL at the given location with the given import type throws any non-Flowable exception, it is wrapped in this formatted FlowableException carrying the import location and type. A FlowableException from the importer is rethrown unchanged.
Solutions
- Check the wrapped cause (getCause()) for the real network/parse failure
- Verify the import location URL is correct and reachable from the engine server (curl it)
- Confirm the import type string matches what the importer supports (e.g. correct WSDL namespace/type)
- Add/fix the required SOAP/WSDL dependencies on the classpath
- Fix TLS/truststore issues if the WSDL is served over HTTPS
Example fix
// before <import location="http://internal-host/service?wsdl" importType="wrongType" /> // after <import location="http://internal-host/service?wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />
Defensive patterns
Strategy: validation
Validate before calling
URL url = new URL(theImport.getLocation());
HttpURLConnection c = (HttpURLConnection) url.openConnection();
if (c.getResponseCode() != 200) {
throw new IllegalStateException("WSDL unreachable: " + theImport.getLocation());
} Try / catch
try {
deploy(processDefinition);
} catch (FlowableException e) {
if (e.getMessage().startsWith("Error importing")) {
logger.error("WSDL import failed for {}, cause: {}", e.getMessage(), e.getCause());
}
} Prevention
- Verify WSDL URLs are reachable from the engine server before deployment
- Pin a local copy of critical WSDLs and import from a stable location
- Keep SOAP/WSDL client dependencies on the classpath
- Check TLS truststore configuration for HTTPS WSDLs
When it happens
Trigger: fillImporterInfo processing a WS import whose location URL is unreachable or malformed, the import type is not supported by the chosen importer, the WSDL is invalid, or the importer class fails to initialize (missing dependencies, network error).
Common situations: WSDL hosted on an intranet host unreachable from the engine server; TLS certificate failures; WSDL with schema imports the parser cannot resolve; typo in import location; SOAP library on classpath missing/incompatible.
Related errors
- Error importing ' ' as
- Unsupported import type
- Unresolved import against " + sourceSystemId
- Unsupported import type
- An error occurs creating a web-service client for WSDL '" +…
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/6e124fe5edcbbacc.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/bpmn/behavior/WebServiceActivityBehavior.java:281
if (!xmlImporterMap.containsKey(theImport.getNamespace())) {
if ("http://schemas.xmlsoap.org/wsdl/".equals(theImport.getImportType())) {
try {
ProcessEngineConfigurationImpl processEngineConfig = CommandContextUtil.getProcessEngineConfiguration();
XMLImporter importerInstance = processEngineConfig.getWsdlImporterFactory()
.createXMLImporter(theImport);
xmlImporterMap.put(theImport.getNamespace(), importerInstance);
importerInstance.importFrom(theImport, sourceSystemId);
structureDefinitionMap.putAll(importerInstance.getStructures());
wsServiceMap.putAll(importerInstance.getServices());
wsOperationMap.putAll(importerInstance.getOperations());
} catch (FlowableException e) {
throw e;
} catch (Exception e) {
throw new FlowableException(String.format("Error importing '%s' as '%s'", theImport.getLocation(),
theImport.getImportType()), e);
}
} else {
throw new FlowableException(String.format("Unsupported import type '%s'", theImport.getImportType()));
}
}
}
protected void returnMessage(List<DataAssociation> dataOutputAssociations, DelegateExecution execution) {
for (DataAssociation dataAssociationElement : dataOutputAssociations) {
AbstractDataAssociation dataAssociation = createDataOutputAssociation(dataAssociationElement);
dataAssociation.evaluate(execution);
}
}
protected void fillMessage(List<DataAssociation> dataInputAssociations, DelegateExecution execution) {
for (DataAssociation dataAssociationElement : dataInputAssociations) {View on GitHub (pinned to d6d39ce1c6)