Environment Cleanup App

Overview

Appian administrators can configure this application to systematically delete unneeded versions of Appian objects to free up memory in the environment on an ongoing basis.

Key Features & Functionality

This application provides a way to manage your Appian object cleanup strategy via a front end tool. These settings can be customized per Appian application to give developers complete control of what is deleted.

The following objects can be managed:

  • Expression Rules
  • SAIL Interfaces
  • Constants
  • Decision Objects
  • Process Models
  • Process Instances
  • Documents
  • Database Data
Anonymous
  • Hello, we believe this issue is caused by the Process Model Utilities plugin on 23.4. We've recently released a new version. Can you update Process Model Utilities to the latest version and let us know if you continue to see this error?


  • When using this application including the plugins it gives an error on the removal of Process Model Versions. 


    Error log information;

    2024-02-28 16:03:39,282 [ThreadPoolTaskExecutor-387273] ERROR com.appiancorp.process.workpoller.WorkItemListener - The following exception occurred while attempting to complete work item [[WorkId: 186, EngineId: execution01, Request: UnattendedJavaActivityRequest:268439441 as {username} by {username}, ProcessId: 268601376, ProcessModelId: 11723, Response: null]] - Exception: 
    javax.resource.spi.work.WorkCompletedException: java.lang.NoSuchMethodError: com.appiancorp.suiteapi.process.ProcessDesignService.deleteProcessModelVersion(Ljava/lang/Long;Ljava/lang/String;)V
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:244)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:750)
    Caused by: java.lang.NoSuchMethodError: com.appiancorp.suiteapi.process.ProcessDesignService.deleteProcessModelVersion(Ljava/lang/Long;Ljava/lang/String;)V
    	at com.appiancorp.ps.processmodelutilities.ProcessModelVersionDeleter.run(ProcessModelVersionDeleter.java:111)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:54)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:28)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:22)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:129)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:241)
    	... 3 more
    Exception in thread "ThreadPoolTaskExecutor-387273" java.lang.NoSuchMethodError: com.appiancorp.suiteapi.process.ProcessDesignService.deleteProcessModelVersion(Ljava/lang/Long;Ljava/lang/String;)V
    	at com.appiancorp.ps.processmodelutilities.ProcessModelVersionDeleter.run(ProcessModelVersionDeleter.java:111)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136)
    	at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:54)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130)
    	at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:28)
    	at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:22)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67)
    	at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55)
    	at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143)
    	at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68)
    	at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:129)
    	at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36)
    	at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110)
    	at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:241)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:750)

    The process model is run with platform admin rights, so it can't be a rights issue.  The PM id's are available in de PV. 
    is the plugin compatible with version 23.4 of Appian? 

  • Hi Rob, thanks for reaching out! We are aware of the issue you mentioned, and it is currently in our backlog to be worked on.

  • I have seen this app delete all versions for multiple process models for multiple customers. I think the issue is with the Process Model Utilities plugin, but has this kind of behavior ever been seen before?

  • v2.1.1 Release Notes
    • Updated the MNI settings in the process model that cleans document folders

  • Thank you for the suggestion! The settings of the node mentioned in your comment have been updated, and the changes should be published in a new version of the tool soon.  

  • Hello, thank you for creating an maintaining this tool!

    I ran into a small error that may or may not be related to our environment. Somehow, the "Automatically run multiple instances of this node" checkbox was unchecked, which meant that no folders were cleaned up. Oddly enough, no errors were thrown even those tp!instanceIndex was still referenced in the smart service configuration. The easy fix was to check the box to enable MNI.

  • v2.1.0 Release Notes
    • Updated the application to use the OOTB execute stored procedure smart service
  • Hello, after investigating this issue, it was determined that this object (cln_approvecleanup) is not found in the provided application. The components found in the provided application dependent on CLN_Application have been confirmed to reference the correct field names. 

  • Hello All,

    Amazing application to keep the environment clean. 

    Just an FYI, We have deployed this application recently to our cloud platform and observed that the CDT field names are not updated in some of the referenced objects, so we were getting the below exceptions. After we updated, it works as expected.