Back Office Organiser

Keep your Backoffice organised!

Docs Quickstart Umbraco Marketplace License NuGet Downloads

Features

Single Click

With a single click your Back Office will be organised!

Sensible (and Opinionated)

A "one size fits all" organiser for

  • Data Types
  • Document Types
  • Media Types
  • Member Types

Extensible

All "Organise Actions" can be extended and replaced.

Organise your Back Office just how you want it.

Versions

Umbraco icon
Umbraco CMS 10

10.1.3

Version 10 Support Policy

Feature updates ended 16/06/2024
Security updates until 16/06/2025
This is a Long Term Support (LTS) version
Umbraco icon
Umbraco CMS 13

13.1.3

Version 13 Support Policy

Feature updates until 14/12/2025
Security updates until 14/12/2026
This is a Long Term Support (LTS) version
Umbraco icon
Umbraco CMS 14

14.1.8

Version 14 Support Policy

Feature updates ended 02/03/2025
Security updates until 30/05/2025
Umbraco icon
Umbraco CMS 15

15.1.10

Version 15 Support Policy

Feature updates until 14/08/2025
Security updates until 14/11/2025
Umbraco icon
Umbraco CMS 16

16.0.0alpha0002

Version 16 Support Policy

Pre-release - not recommended for production use.
Umbraco 16 will be released on 12/06/2025

Readme

Quick Start

  • Go to the backoffice
  • Click Settings
  • Click Organise
  • Select the types you wish to organise
  • Click submit and confirm
  • Refresh your page and enjoy a cleaner backoffice ✨

Configuration

Add the following to your appsettings.json file

appsettings.json
"BackOfficeOrganiser": {
"DataTypes": {
"InternalFolderName": "Internal",
"ThirdPartyFolderName": "Third Party",
"CustomFolderName": "Custom"
}
}

Extending

You can implement your own Organise Action, a method that determines where a type should be moved to. Implement the following interfaces:

  • Document Types => IContentTypeOrganiseAction
  • Media Types => IMediaTypeOrganiseAction
  • Member Types => IMemberTypeOrganiseAction
  • Data Types => IDataTypeOrganiseAction

Example

ExampleContentTypeOrganiseAction.cs
using jcdcdev.Umbraco.Core.Extensions;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes;
public class ExampleContentTypeOrganiseAction : IContentTypeOrganiseAction
{
// Handle all but container types (Folders)
public bool CanMove(IContentType contentType, IContentTypeService contentTypeService) => !contentType.IsContainer;
public void Move(IContentType contentType, IContentTypeService contentTypeService)
{
var folderId = -1;
var folderName = string.Empty;
var isComposition = contentTypeService.GetComposedOf(contentType.Id).Any();
if (contentType.AllowedTemplates?.Any() ?? false)
{
folderName = "Pages";
}
else if (isComposition)
{
folderName = "Compositions";
}
else if (contentType.IsElement)
{
folderName = "Element Types";
}
if (!folderName.IsNullOrWhiteSpace())
{
folderId = contentTypeService.GetOrCreateFolder(folderName).Id;
}
contentTypeService.Move(contentType, folderId);
}
}
public class Composer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
// Make sure you register your action BEFORE the default!
builder.ContentTypeOrganiseActions().Insert<ExampleContentTypeOrganiseAction>();
}
}

Contributing

Contributions to this package are most welcome! Please visit the Contributing page.

Acknowledgements (Thanks)