diff --git a/core/src/org/labkey/core/CoreController.java b/core/src/org/labkey/core/CoreController.java index 477b9f8811d..ce4f521812c 100644 --- a/core/src/org/labkey/core/CoreController.java +++ b/core/src/org/labkey/core/CoreController.java @@ -760,7 +760,7 @@ public ApiResponse execute(SimpleApiJsonForm form, BindException errors) } Set ensureModules = new HashSet<>(); - if (json.has("ensureModules")) + if (json.has("ensureModules") && !json.isNull("ensureModules")) { List requestedModules = Arrays.stream(json.getJSONArray("ensureModules") .toArray()).map(Object::toString).collect(Collectors.toList()); @@ -777,7 +777,16 @@ else if (module.getRequireSitePermission() && !getContainer().hasEnableRestricte } Container newContainer = ContainerManager.createContainer(getContainer(), name, title, description, typeName, getUser()); - newContainer.setFolderType(folderType, ensureModules, getUser()); + if (folderType != FolderType.NONE) + { + newContainer.setFolderType(folderType, ensureModules, getUser()); + } + else if (!ensureModules.isEmpty()) + { + // Custom folder may inherit modules from parent. 'setFolderType' would remove them. + ensureModules.addAll(newContainer.getActiveModules()); + newContainer.setActiveModules(ensureModules); + } return new ApiSimpleResponse(newContainer.toJSON(getUser())); }