{"record":{"id":"181d29dd5d07f8e3","repo":"flowable/flowable-engine","slug":"unresolved-import-against-sourcesystemid","errorCode":null,"errorMessage":"Unresolved import against \" + sourceSystemId","messagePattern":"Unresolved import against \" \\+ sourceSystemId","errorType":"exception","errorClass":"UncheckedException","httpStatus":null,"severity":"error","filePath":"modules/flowable-cxf/src/main/java/org/flowable/engine/impl/webservice/CxfWSDLImporter.java","lineNumber":96,"sourceCode":"    public CxfWSDLImporter() {\n        this.namespace = \"\";\n    }\n\n    @Override\n    public void importFrom(Import theImport, String sourceSystemId) {\n        this.namespace = theImport.getNamespace() == null ? \"\" : theImport.getNamespace() + \":\";\n        try {\n            final URIResolver uriResolver = this.createUriResolver(sourceSystemId, theImport);\n            if (uriResolver.isResolved()) {\n                if (uriResolver.getURI() != null) {\n                    this.importFrom(uriResolver.getURI().toString());\n                } else if (uriResolver.isFile()) {\n                    this.importFrom(uriResolver.getFile().getAbsolutePath());\n                } else if (uriResolver.getURL() != null) {\n                    this.importFrom(uriResolver.getURL().toString());\n                }\n            } else {\n                throw new UncheckedException(new Exception(\"Unresolved import against \" + sourceSystemId));\n            }\n\n        } catch (final IOException e) {\n            throw new UncheckedException(e);\n        }\n    }\n\n    protected URIResolver createUriResolver(String sourceSystemId, Import theImport) throws IOException {\n        return new URIResolver(sourceSystemId, theImport.getLocation());\n    }\n\n    public void importFrom(String url) {\n        this.wsServices.clear();\n        this.wsOperations.clear();\n        this.structures.clear();\n\n        this.wsdlLocation = url;\n","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cxf/src/main/java/org/flowable/engine/impl/webservice/CxfWSDLImporter.java#L78-L114","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nfactory.createClient(\"file:/wsdl/service.wsdl\"); // imports ../xsd/types.xsd which is missing\n// after\n// place types.xsd at ../xsd/types.xsd relative to the WSDL, or rewrite the import:\n// <xs:import namespace=\"...\" schemaLocation=\"xsd/types.xsd\"/>","handlingStrategy":"validation","validationCode":"// resolve and check the import target before invoking the importer\nFile wsdl = new File(\"/wsdl/service.wsdl\");\nif (!wsdl.exists()) throw new IllegalStateException(\"WSDL missing\");\n// confirm all schemaLocation targets resolve relative to wsdl.getParentFile()","typeGuard":null,"tryCatchPattern":"try {\n    importer.importFrom(wsdlUrl);\n} catch (UncheckedException e) {\n    if (e.getMessage().startsWith(\"Unresolved import\")) {\n        // fetch the WSDL bundle (with imports) locally and retry\n    }\n}","preventionTips":["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."],"tags":["wsdl","cxf","import","resource-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}