class IngestCleanupPreparationPlugin extends ActionHandler {

    @Override
    public ItemStatus execute(WorkerParameters param, HandlerIO handler)
        throws ProcessingException {

        try {

            String ingestOperationId = param.getParameterValue(WorkerParameterName.ingestOperationIdToCleanup);

            PurgeAccessionRegisterModel accessionRegisterModel = new PurgeAccessionRegisterModel();
            accessionRegisterModel.setOpi(ingestOperationId);

            CleanupReportManager cleanupReportManager = loadCleanupReportManager(handler);

            prepareUnits(handler, ingestOperationId, accessionRegisterModel, cleanupReportManager);
            prepareObjectGroups(handler, ingestOperationId, accessionRegisterModel, cleanupReportManager);

            prepareAccessingRegister(handler, ingestOperationId, accessionRegisterModel);

            cleanupReportManager.persistReportDataToWorkspace(handler);

            LOGGER.info("Ingest cleanup preparation succeeded");
            return buildItemStatus(INGEST_CLEANUP_PREPARATION, StatusCode.OK);

        } catch (ProcessingStatusException e) {
            LOGGER.error(String.format("Ingest cleanup preparation failed with status [%s]", e.getStatusCode()), e);
            return buildItemStatus(INGEST_CLEANUP_PREPARATION, e.getStatusCode(), e.getEventDetails());
        }
    }

    public  IngestCleanupPreparationPlugin();
    @VisibleForTesting  IngestCleanupPreparationPlugin(MetaDataClientFactory metaDataClientFactory,
        AdminManagementClientFactory adminManagementClientFactory);

}