require(["dojo/Deferred", "dojo/dom", "dojo/on", "ecm/widget/dialog/AddContentItemDialog", "dojo/domReady!" ], function(Deferred, dom, on, AddContentItemDialog) { var getEntryTemplate = function(repository, entryTemplateId) { var deferred = new Deferred(); repository.retrieveItem(null, function(item) { //var entryTemplate = repository.getEntryTemplateById(item.id,item.name, item.objectStore); var entryTemplateItem = {}; entryTemplateItem.entryTemplate = item; entryTemplateItem.repository = repository; deferred.resolve(entryTemplateItem); }, "EntryTemplate", "current", entryTemplateId); return deferred.promise; }; var getCaseFolder = function(payload) { var deferred = new Deferred(); var caseEditable = payload.caseEditable; console.log("caseEditable"); console.log(caseEditable); caseEditable.getCase().retrieveCaseFolder(function(parentCaseFolder) { deferred.resolve(parentCaseFolder); }); return deferred.promise; }; var getSubFolder = function(parentCaseFolder, subFolderPath) { var deferred = new Deferred(); console.log("parentCaseFolder"); console.log(parentCaseFolder); var rootPath = parentCaseFolder.attributes.PathName; var fullPath = rootPath + "/" + subFolderPath; parentCaseFolder.repository.retrieveItem(fullPath, function(subfolder) { console.log("Subfolder"); console.log(subfolder); deferred.resolve(subfolder); }, null, null, null, null, null); return deferred; }; var executeFn = function(payload) { //vs-id of the entry template var entryTemplateId = "{84F966D4-A6E5-C65A-8A97-67140EB00000}"; //the sub folder path like "Sub1/Sub2/Sub3" var subFolderPath = "F1"; var getCaseFolderPromise = getCaseFolder(payload); getCaseFolderPromise.then(function(parentCaseFolder) { return getSubFolder(parentCaseFolder, subFolderPath); }).then(function(subfolder) { console.log("Promise Sub Folder"); console.log(subfolder); console.log("Promise Repo ID"); console.log(subfolder.repository.repositoryId); var repository = ecm.model.desktop.getRepository(subfolder.repository.repositoryId); console.log("Promise repository"); console.log(repository); var getEntryTemplatePromise = getEntryTemplate(repository, entryTemplateId); getEntryTemplatePromise.then(function(entryTemplateItem) { console.log("entryTemplateItem"); console.log(entryTemplateItem); var entryTemplate = entryTemplateItem.entryTemplate; var repository = entryTemplateItem.repository; var addContentItemDialog = new AddContentItemDialog(); addContentItemDialog.showUsingTemplateItem(repository, subfolder, true, false, function(addedItem) { console.log("addedItem"); console.log(addedItem); subfolder.addToFolder(addedItem, function() { console.log('Document added to sub folder '); }); }, null, entryTemplate); }); }); }; executeFn(payload); });