Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
AI OnAI Off
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
[New in CMS.Core 9.3]
This topic explains how to create, update, access and delete projects and project items programmatically in Episerver CMS.
Examples are written for "Project Mode."
Note: An enum, ProjectStatus, used by the "old" project gadget, is not documented here. For example, the List method has an overload that takes this parameter. Episerver does not recommend using ProjectStatus, since it is being phased out.
Currently, there is no public API for programmatically creating comments and custom notifications on projects.
ProjectRepository projectRepository = ServiceLocator.Current.GetInstance<ProjectRepository>();
Project project = new Project { Name = newProjectName };
projectRepository.Save(project);
ProjectRepository.ProjectSaved += OnProjectSaved;
ProjectRepository.ProjectDeleted += OnProjectDeleted;
ProjectRepository.ProjectItemsSaved += OnProjectItemsSaved;
ProjectRepository.ProjectItemsDeleted += OnProjectItemsDeleted;
ProjectItem projectItem = new ProjectItem(project.ID, content);
projectRepository.SaveItems(new ProjectItem[] { projectItem });
Project project = projectRepository.Get(projectId);
IEnumerable<Project> projectList = projectRepository.List();
IEnumerable<Project> projectList = projectRepository.List(0, 10, out totalCount);
ProjectItem projectItem = projectRepository.GetItem(projectItemId);
IEnumerable<ProjectItem> projectItems1 = projectRepository.ListItems(project.ID);
IEnumerable<ProjectItem> projectItems2 = projectRepository.ListItems(project.ID, contentLanguage, 0, 10, out totalCount);
IEnumerable<ProjectItem> projectItems3 = projectRepository.ListItems(project.ID, category, contentLanguage, 0, 10, out totalCount);
IEnumerable<ProjectItem> projectItems = projectRepository.Findtems(new ContentReference[] { projectItem1.ContentLink });
ProjectResolver projectResolver = ServiceLocator.Current.GetInstance<ProjectResolver>();
IEnumerable<int> currentProjects = projectResolver.GetCurrentProjects();
project.Name = updatedProjectName;
projectRepository.Save(project);
projectRepository.SaveItems(new ProjectItem[] { existingProjectItem, newProjectItem });
projectRepository.Delete(project.ID);
projectRepository.DeleteItems(new int[] { projectItem.ID });
projectRepository.DeleteItems(projectRepository.GetItems(project.ID).Select(item => item.ID));
ProjectPublisher projectPublisher = ServiceLocator.Current.GetInstance<ProjectPublisher>();
await projectPublisher.PublishAsync(project);
await projectPublisher.PublishAsync(project,laterDateTime);
await projectPublisher.PublishAsync(project, AccessLevel.NoAccess);
await projectPublisher.ReactivateAsync(project);
await projectPublisher.PublishAsync(project, new[] { projectItem1, projectItem3, projectItem4 }, null, AccessLevel.NoAccess);
IEnumerable<IContent> contentReferences = new[] { contentReference };
if (projectRepository.FindItems(contentReferences).Any()) { }
IEnumerable<IContent> contentReferences = new[] { contentReference. ToReferenceWithoutVersion() };
if (projectRepository.FindItems(contentReferences).Any()) { }
if (projectRepository.FindItems(new[] { contentReference }).Any(x => x.ProjectID == projectID)) { }
IEnumerable<Project> projects = projectRepository
.FindItems(new[] { contentReference })
.Select(item => item.ProjectID)
.Distinct()
.Select(id => projectRepository.Get(id));
IContentRepository contentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
LoaderOptions loaderOptions = new LoaderOptions { new ProjectLoaderOption { ProjectIds = new[] { projectID } } };
contentRepository.Get(contentReference1, loaderOptions);
Last updated: Nov 02, 2015