flowable/flowable-engine · error · FlowableException
Error importing ' ' as
Error message
Error importing '%s' as '%s'
What it means
Thrown in WebServiceActivityBehavior.fillImporterInfo() when importing a WSDL (or other declared import) fails with an unexpected exception. Non-FlowableException failures during importer execution (I/O, parsing, reflection errors) are wrapped in a FlowableException carrying the import location and import type, with the original exception as cause.
Solutions
- Inspect the cause exception to find the real failure (connection refused, parse error, 404) and fix that
- Verify the import location URL is reachable and correct from the engine's host
- Fix the WSDL so it parses (resolve all its own schema imports, valid XML)
- Provide local copies of the WSDL/schema and correct the import location, or check proxy/network settings
Example fix
<!-- before (unreachable location) --> <import importType="http://schemas.xmlsoap.org/wsdl/" location="http://internalhost:8080/service?wsdl" namespace="http://example.com" /> <!-- after (corrected/reachable location) --> <import importType="http://schemas.xmlsoap.org/wsdl/" location="http://prodhost:8080/service?wsdl" namespace="http://example.com" />
Defensive patterns
Strategy: try-catch
Validate before calling
// before deployment: verify each import location is reachable new URL(theImport.getLocation()).openStream().close();
Try / catch
try {
deploymentBuilder.deploy();
} catch (FlowableException e) {
if (e.getMessage().startsWith("Error importing")) {
logger.error("WSDL import failed for location; cause:", e.getCause());
}
throw e;
} Prevention
- Verify WSDL URLs are reachable from the server before deployment
- Keep local copies of WSDL/schema files for stable deployments
- Resolve authentication/proxy requirements for WSDL locations up front
When it happens
Trigger: Parsing a BPMN model whose <definitions> declares an <import> (importType e.g. WSDL) and the importer for that location throws a non-Flowable exception — unreadable WSDL URL, malformed WSDL, missing schema, network failure.
Common situations: WSDL at an unreachable URL or behind authentication; WSDL with schema imports that cannot be resolved offline; wrong namespace/location attributes after moving services; DNS/proxy issues at deploy time.
Understand the failure class
Background: 'Something went wrong' / 'Request failed (500)' / 'HTTP error! status: 404' — what failed HTTP requests actually mean and how to find the real cause — this error's family across 28 libraries.
Related errors
- Error importing ' ' as ' ' (import location, import type)
- 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/55247fca0422052e.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/WebServiceActivityBehavior.java:289
if (!xmlImporterMap.containsKey(theImport.getNamespace())) {
if ("http://schemas.xmlsoap.org/wsdl/".equals(theImport.getImportType())) {
try {
ProcessEngineConfigurationImpl processEngineConfig = Context.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)