{"record":{"id":"422b0050842992da","repo":"jenkinsci/jenkins","slug":"unknown-itemgroup-422b00","errorCode":null,"errorMessage":"Unknown ItemGroup ","messagePattern":"Unknown ItemGroup ","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/hudson/cli/CreateJobCommand.java","lineNumber":64,"sourceCode":"    @Argument(metaVar = \"NAME\", usage = \"Name of the job to create\", required = true)\n    @SuppressFBWarnings(value = \"PA_PUBLIC_PRIMITIVE_ATTRIBUTE\", justification = \"Preserve API compatibility\")\n    public String name;\n\n    @Override\n    protected int run() throws Exception {\n        Jenkins h = Jenkins.get();\n\n        if (h.getItemByFullName(name) != null) {\n            throw new IllegalStateException(\"Job '\" + name + \"' already exists\");\n        }\n\n        ModifiableTopLevelItemGroup ig = h;\n        int i = name.lastIndexOf('/');\n        if (i > 0) {\n            String group = name.substring(0, i);\n            Item item = h.getItemByFullName(group);\n            if (item == null) {\n                throw new IllegalArgumentException(\"Unknown ItemGroup \" + group);\n            }\n\n            if (item instanceof ModifiableTopLevelItemGroup) {\n                ig = (ModifiableTopLevelItemGroup) item;\n            } else {\n                throw new IllegalStateException(\"Can't create job from CLI in \" + group);\n            }\n            name = name.substring(i + 1);\n        }\n\n        Jenkins.checkGoodName(name);\n        ig.createProjectFromXML(name, stdin);\n        return 0;\n    }\n}\n","sourceCodeStart":46,"sourceCodeEnd":80,"githubUrl":"https://github.com/jenkinsci/jenkins/blob/2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc/core/src/main/java/hudson/cli/CreateJobCommand.java#L46-L80","documentation":"`CreateJobCommand.run()`: when NAME contains '/', the prefix before the last '/' is the parent ItemGroup. If `h.getItemByFullName(group)` returns null, IllegalArgumentException 'Unknown ItemGroup <group>' is thrown. The parent group must already exist (CreateJobCommand does not create intermediate folders).","triggerScenarios":"Running `create-job myfolder/newjob < config.xml` where 'myfolder' is not an existing item.","commonSituations":"Typo in the folder portion; assuming folders are auto-created; missing an intermediate parent in a deep path.","solutions":["Create the parent Folder first (Folders plugin), then create the job inside it.","Correct the folder name in the argument.","Create the job at top level (no '/') if nesting isn't needed."],"exampleFix":"// before:\n//   java -jar jenkins-cli.jar create-job misspelled/newjob < config.xml\n//   -> IllegalArgumentException: Unknown ItemGroup misspelled\n//\n// after: create/verify the folder, then the job\n//   java -jar jenkins-cli.jar create-job services < folder.xml\n//   java -jar jenkins-cli.jar create-job services/newjob < config.xml","handlingStrategy":"validation","validationCode":"// Verify parent group exists for nested names\nint i = name.lastIndexOf('/');\nif (i > 0) {\n    String group = name.substring(0, i);\n    if (h.getItemByFullName(group) == null)\n        throw new IllegalArgumentException(\"Unknown ItemGroup \" + group);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pre-create folders before creating nested jobs via CLI.","Validate intermediate path segments exist before create-job."],"tags":["jenkins","cli","job","folder","create"],"backgroundTag":null,"analyzedSha":"2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc","analyzedAt":"2026-08-14T07:07:15.274Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}