diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml
index ff8119c138..b2527baa9f 100644
--- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml
+++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/patch/rm-patch-v24-context.xml
@@ -15,20 +15,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java
deleted file mode 100644
index b604cec8d4..0000000000
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/patch/v24/RMv24DispositionInheritancePatch.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * #%L
- * Alfresco Records Management Module
- * %%
- * Copyright (C) 2005 - 2019 Alfresco Software Limited
- * %%
- * This file is part of the Alfresco software.
- * -
- * If the software was purchased under a paid Alfresco license, the terms of
- * the paid license agreement will prevail. Otherwise, the software is
- * provided under the following open source license terms:
- * -
- * Alfresco is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * -
- * Alfresco is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- * -
- * You should have received a copy of the GNU Lesser General Public License
- * along with Alfresco. If not, see .
- * #L%
- */
-
-package org.alfresco.module.org_alfresco_module_rm.patch.v24;
-
-import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_DISPOSITION_LIFECYCLE;
-import static org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel.ASPECT_DISPOSITION_PROCESSED;
-
-import java.util.List;
-
-import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSchedule;
-import org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService;
-import org.alfresco.module.org_alfresco_module_rm.patch.AbstractModulePatch;
-import org.alfresco.module.org_alfresco_module_rm.query.RecordsManagementQueryDAO;
-import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
-import org.alfresco.repo.domain.node.NodeDAO;
-import org.alfresco.repo.domain.qname.QNameDAO;
-import org.alfresco.repo.policy.BehaviourFilter;
-import org.alfresco.repo.transaction.RetryingTransactionHelper;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- *
- */
-public class RMv24DispositionInheritancePatch extends AbstractModulePatch
-{
- private static final Log logger = LogFactory.getLog(RMv24DispositionInheritancePatch.class);
-
- private static final long BATCH_SIZE = 1000L;
-
- private DispositionService dispositionService;
-
- private RecordService recordService;
-
- private NodeService nodeService;
-
- private RecordsManagementQueryDAO recordsManagementQueryDAO;
-
- private BehaviourFilter behaviourFilter;
-
- protected QNameDAO qnameDAO;
-
- private NodeDAO nodeDAO;
-
- public void setDispositionService(DispositionService dispositionService)
- {
- this.dispositionService = dispositionService;
- }
-
- public void setNodeService(NodeService nodeService)
- {
- this.nodeService = nodeService;
- }
-
- public void setRecordService(RecordService recordService)
- {
- this.recordService = recordService;
- }
-
- public void setRecordsManagementQueryDAO(RecordsManagementQueryDAO recordsManagementQueryDAO)
- {
- this.recordsManagementQueryDAO = recordsManagementQueryDAO;
- }
-
- public void setBehaviourFilter(BehaviourFilter behaviourFilter)
- {
- this.behaviourFilter = behaviourFilter;
- }
-
- public void setQnameDAO(QNameDAO qnameDAO)
- {
- this.qnameDAO = qnameDAO;
- }
-
- public void setNodeDAO(NodeDAO nodeDAO)
- {
- this.nodeDAO = nodeDAO;
- }
-
- /**
- * @see AbstractModulePatch#applyInternal()
- *
- * Checks for records added to a disposition schedule pre MNT-19967 and applys disposition step and properties
- */
- @Override
- public void applyInternal()
- {
- Long maxNodeId = nodeDAO.getMaxNodeId();
- int batchCount = 0;
-
- qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED);
-
- for (Long i = 0L; i < maxNodeId; i += BATCH_SIZE)
- {
- int updatedRecords = 0;
- List folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(i, i + BATCH_SIZE);
- for (NodeRef folder : folders)
- {
- updatedRecords = updatedRecords + updateRecordFolder(folder);
- }
-
- batchCount ++;
- logger.info("Records updated: "+ updatedRecords);
- logger.info("Completed batch "+ batchCount+" of "+ (Math.ceil(maxNodeId/BATCH_SIZE)+1));
- }
- }
-
- private int updateRecordFolder(final NodeRef recordFolder)
- {
- return transactionService.getRetryingTransactionHelper()
- .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback()
- {
- public Integer execute() throws Throwable
- {
- int recordCount = 0;
-
- behaviourFilter.disableBehaviour(recordFolder);
- if (LOGGER.isDebugEnabled())
- {
- logger.info("Checking folder: " + recordFolder);
- }
- DispositionSchedule schedule = dispositionService.getDispositionSchedule(recordFolder);
- if (schedule.isRecordLevelDisposition())
- {
- List records = recordService.getRecords(recordFolder);
- for (NodeRef record : records)
- {
- if (!nodeService.hasAspect(record, ASPECT_DISPOSITION_LIFECYCLE))
- {
- if (LOGGER.isDebugEnabled())
- {
- logger.info("updating record: " + record);
- }
- behaviourFilter.disableBehaviour(record);
- dispositionService.updateNextDispositionAction(record, schedule);
- recordCount ++;
- behaviourFilter.enableBehaviour(record);
- }
- }
- }
- nodeService.addAspect(recordFolder, ASPECT_DISPOSITION_PROCESSED, null);
- behaviourFilter.enableBehaviour(recordFolder);
-
- return recordCount;
- }
- }, false, true);
- }
-}
-
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java
index b761d0bd3b..333fefe657 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/query/RecordsManagementQueryDAOImpl.java
@@ -48,7 +48,7 @@ import org.mybatis.spring.SqlSessionTemplate;
public class RecordsManagementQueryDAOImpl implements RecordsManagementQueryDAO, RecordsManagementModel
{
private static final String COUNT_IDENTIFIER = "alfresco.query.rm.select_CountRMIndentifier";
- private static final String SCHEDULED_FOLDERS = "alfresco.query.rm.select_RecordFoldersWithSchedules";
+ private static final String SCHEDULED_FOLDERS = "alfresco.query.rm.select_RecordFoldersWithSchedulesExtended";
private static final String SCHEDULED_FOLDERS_COUNT = "alfresco.query.rm.select_RecordFoldersWithSchedulesCount";
/** SQL session template */
@@ -111,6 +111,8 @@ public class RecordsManagementQueryDAOImpl implements RecordsManagementQueryDAO,
Map params = new HashMap(2);
params.put("dispositionQnameId", qnameDAO.getQName(PROP_RS_HAS_DISPOITION_SCHEDULE)
.getFirst());
+ params.put("processed", qnameDAO.getQName(ASPECT_DISPOSITION_PROCESSED)
+ .getFirst());
params.put("folderQnameId",qnameDAO.getQName(TYPE_RECORD_FOLDER).getFirst());
params.put("start", start);
params.put("end", end);
diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java b/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java
index 4a650b8b27..effba5a757 100644
--- a/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java
+++ b/rm-community/rm-community-repo/source/java/org/alfresco/repo/web/scripts/schedule/UpdateRecordScheduleGet.java
@@ -154,10 +154,20 @@ public class UpdateRecordScheduleGet extends AbstractWebScript implements Record
protected Map buildModel(WebScriptRequest req, WebScriptResponse res) throws IOException
{
Map model = new HashMap();
-
+ transactionService.getRetryingTransactionHelper()
+ .doInTransaction(new RetryingTransactionHelper.RetryingTransactionCallback()
+ {
+ public String execute() throws Throwable
+ {
+ qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED);
+ return null;
+ }
+
+ },false,true);
+
int maxRecordFolders = getMaxRecordFolders(req);
NodeRef recordFolder = getRecordFolder(req);
-
+
int processedRecords = 0;
if (recordFolder != null)
@@ -170,9 +180,6 @@ public class UpdateRecordScheduleGet extends AbstractWebScript implements Record
int processedRecordFolders = 0;
int queryBatchSize = 10000;
Long maxNodeId = nodeDAO.getMaxNodeId();
-
- qnameDAO.getOrCreateQName(ASPECT_DISPOSITION_PROCESSED);
-
for (Long i = 0L; i < maxNodeId; i += queryBatchSize)
{
List folders = recordsManagementQueryDAO.getRecordFoldersWithSchedules(i, i + queryBatchSize);