flowable/flowable-engine · error · UncheckedException
Unresolved import against " + sourceSystemId
Error message
Unresolved import against " + sourceSystemId
What it means
CxfWSDLImporter.importFrom recursively resolves WSDL <import>/<include> references. When a relative import's systemId cannot be resolved to a local file or URL (the URIResolver yields neither file nor URL), it throws UncheckedException('Unresolved import against <sourceSystemId>'). It means the referenced schema/WSDL could not be located.
Solutions
- Fix the import location in the WSDL/XSD so the referenced resource is reachable from the source systemId.
- Serve or download the full WSDL bundle (with all imported XSDs) and import from the local root document.
- Check network/proxy access if the import points to a remote URL; verify the URL is accessible with curl/browser.
Example fix
// before
factory.createClient("file:/wsdl/service.wsdl"); // imports ../xsd/types.xsd which is missing
// after
// place types.xsd at ../xsd/types.xsd relative to the WSDL, or rewrite the import:
// <xs:import namespace="..." schemaLocation="xsd/types.xsd"/> Defensive patterns
Strategy: validation
Validate before calling
// resolve and check the import target before invoking the importer
File wsdl = new File("/wsdl/service.wsdl");
if (!wsdl.exists()) throw new IllegalStateException("WSDL missing");
// confirm all schemaLocation targets resolve relative to wsdl.getParentFile() Try / catch
try {
importer.importFrom(wsdlUrl);
} catch (UncheckedException e) {
if (e.getMessage().startsWith("Unresolved import")) {
// fetch the WSDL bundle (with imports) locally and retry
}
} Prevention
- Bundle the WSDL with all imported XSDs and import from the local root document.
- Use absolute file:/ or https:// systemIds in imports to avoid relative-path breakage.
- Test WSDL resolution offline/in CI so broken imports surface early.
When it happens
Trigger: Importing a WSDL whose import/include points to a path or systemId that cannot be resolved — missing file, wrong relative path, or a non-resolvable remote systemId — during DynamicClient creation from a WSDL URL.
Common situations: WSDLs referencing XSDs via relative paths broken when the WSDL is moved; WSDL downloaded without its companion schemas; firewall/offline environments blocking imported remote resources; classpath vs filesystem URL confusion.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- An error occurs creating a web-service client for WSDL '" +…
- Error importing ' ' as
- Error importing ' ' as ' ' (import location, import type)
- batch entity not found for id
- Cannot find bpmn model for process definition id
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/181d29dd5d07f8e3.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-cxf/src/main/java/org/flowable/engine/impl/webservice/CxfWSDLImporter.java:96
public CxfWSDLImporter() {
this.namespace = "";
}
@Override
public void importFrom(Import theImport, String sourceSystemId) {
this.namespace = theImport.getNamespace() == null ? "" : theImport.getNamespace() + ":";
try {
final URIResolver uriResolver = this.createUriResolver(sourceSystemId, theImport);
if (uriResolver.isResolved()) {
if (uriResolver.getURI() != null) {
this.importFrom(uriResolver.getURI().toString());
} else if (uriResolver.isFile()) {
this.importFrom(uriResolver.getFile().getAbsolutePath());
} else if (uriResolver.getURL() != null) {
this.importFrom(uriResolver.getURL().toString());
}
} else {
throw new UncheckedException(new Exception("Unresolved import against " + sourceSystemId));
}
} catch (final IOException e) {
throw new UncheckedException(e);
}
}
protected URIResolver createUriResolver(String sourceSystemId, Import theImport) throws IOException {
return new URIResolver(sourceSystemId, theImport.getLocation());
}
public void importFrom(String url) {
this.wsServices.clear();
this.wsOperations.clear();
this.structures.clear();
this.wsdlLocation = url;
View on GitHub (pinned to d6d39ce1c6)