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
  • The same thing happened to me. Check the import log. If you find records like this ‘Process Model is not valid. The process model must have a valid name in the main language of the site: XXXX’ means that before importing you must configure the site with US as the main language, then import the app and then you can restore the main language of your site to the one you had before.

  • Hi,

    I've installed the provided package but seems like something is missing, I am not able to find the main interface of the application. 

    Thank you

    Fabrizio

  • 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