1

I wanted to build something similar to the following article: Schedule Sitecore Database cleanup tasks programatically

I do know that the cleanup database functionality is in Sitecore's launchpad -> Control Panel in my instance running version 8.1

The author does, what I believe, is a custom setup to call Sitecore's cleanup service. Code from the article is the following:

    namespace Sitecore.Foundation.ScheduledTasks.Services
    {
    using System;
    using System.Collections.Generic;
    using System.Web;
    using log4net;
    using Sitecore.Data;
    using Sitecore.Data.Items;
    using Sitecore.Diagnostics;
    using Sitecore.Mvc.Extensions;
    using Sitecore.Mvc.Presentation;
    using Sitecore.Pipelines;
    using Sitecore.Pipelines.RenderField;
    using Sitecore.Tasks;
    using Sitecore.Web.UI.WebControls;
    using Sitecore.ExperienceContentManagement.Administration.Helpers.DbCleanup;

    public class ScheduledTasksService
    {
        public void Execute(Item[] items, CommandItem command, ScheduleItem schedule)
        {
            this.CleanupBlobs();
        }

        public void CleanupBlobs()
        {
            try
            {
                CleanupTaskRunner runner = new CleanupTaskRunner();
                TaskToRun task = new TaskToRun();
                task.Database = "web";
                task.Task = CleanupTasks.CleanupBlobs;
                runner.RunCleanUp(new TaskToRun[] { task });
            }
            catch(Exception e)
            {
                Log.Error("Error while cleaning Blobs table", e, this);
            }
        }
    }
}

I wanted to know if there is a more standard way of doing so. I don't have access to the Sitecore.ExperienceContentManagement.Administration.Helpers.DbCleanup

6
  • Not sure what the question is. The code shown is triggered from /sitecore/system/tasks - there will be a Command referencing ScheduledTasksService, and there will be a Schedule item with the schedule. Here is an old post addressing how to handle code that you want to run recurringly: SItecore Scheduling. If the site can run the code that you posted then you can always decompile the dll in question if you want to see that implementation of the Cleanup code. Jun 2, 2021 at 2:02
  • 1
    There is a dll called Sitecore.ExperienceContentManagement.Administration.dll, the author of the post extracted the relevant code from the dll and pasted it in a scheduler. Are you saying your are getting red squiggly lines in Visual Studio when you copy paste his code? You might need to add Sitecore references to your project through NuGet to get the Intellisense to recognize that your custom code can invoke Sitecore's native code. Jun 2, 2021 at 2:15
  • Thank you so much for the comments. Yes indeed I was having that issue of red squiggly lines. What would be the package I need to get from NuGet?
    – coolzoa
    Jun 2, 2021 at 16:17
  • You can add the nuget package Sitecore.ExperienceContentManagement.Administration specifying your sitecore 8.1 version Jun 2, 2021 at 19:11
  • Many thanks, it worked as expected.
    – coolzoa
    Jun 2, 2021 at 21:10

1 Answer 1

1

If you want to automate the cleanup service without writing any custom code you can use sitecore powershell to create a task as described in the documentation https://doc.sitecorepowershell.com/modules/integration-points/tasks, that will call a maintenance script under the System Maintenance module (/sitecore/system/Modules/PowerShell/Script Library/SPE/Maintenance/System Maintenance/Tasks/Clean up databases):

enter image description here

In order to install SPE you can follow the steps described in the installation doc https://doc.sitecorepowershell.com/installation.

In order to fix the compilation error for the namespace Sitecore.ExperienceContentManagement.Administration.Helpers.DbCleanup you need to add the nuget package Sitecore.ExperienceContentManagement.Administration specifying your sitecore 8.1 version

1
  • Many thanks. I will suggest this to the team as well since we currently don't have SPE installed.
    – coolzoa
    Jun 2, 2021 at 21:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.