From 36d273ad39a4ad752832807e93a704b21532deba Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Thu, 26 Mar 2026 12:27:23 +0000 Subject: [PATCH 01/10] FPVTL-2412 : initial commit --- build.gradle | 14 ++++++++++++-- .../CafcassReportAndGuardianEnum.java | 4 ++++ .../models/complextypes/QuarantineLegalDoc.java | 2 ++ .../cafcass/CafcassUploadDocService.java | 16 +++++++++++++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 02ac2ca04b7..93f4cc78982 100644 --- a/build.gradle +++ b/build.gradle @@ -193,7 +193,13 @@ apply plugin: 'net.serenity-bdd.aggregator' group = 'uk.gov.hmcts.reform.prl' version = '0.0.1' -mainClassName = 'uk.gov.hmcts.reform.prl.Application' +if (GradleVersion.current() >= GradleVersion.version('9.0')) { + springBoot { + mainClass.set('uk.gov.hmcts.reform.prl.Application') + } +} else { + mainClassName = 'uk.gov.hmcts.reform.prl.Application' +} bootJar { getArchiveFileName().set(provider { @@ -487,7 +493,11 @@ dependencies { } task fortifyScan(type: JavaExec) { - main = "uk.gov.hmcts.fortifyclient.FortifyClientMainApp" + if (GradleVersion.current() >= GradleVersion.version('9.0')) { + mainClass.set("uk.gov.hmcts.fortifyclient.FortifyClientMainApp") + } else { + main = "uk.gov.hmcts.fortifyclient.FortifyClientMainApp" + } classpath += sourceSets.test.runtimeClasspath jvmArgs = ['--add-opens=java.base/java.lang.reflect=ALL-UNNAMED'] } diff --git a/src/main/java/uk/gov/hmcts/reform/prl/enums/managedocuments/CafcassReportAndGuardianEnum.java b/src/main/java/uk/gov/hmcts/reform/prl/enums/managedocuments/CafcassReportAndGuardianEnum.java index 605070a78c9..7c130eda031 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/enums/managedocuments/CafcassReportAndGuardianEnum.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/enums/managedocuments/CafcassReportAndGuardianEnum.java @@ -18,6 +18,10 @@ public enum CafcassReportAndGuardianEnum { riskAssessment("16aRiskAssessment", "16a risk assessment"), + cirTransferRequest("cirTransferRequest", "CIR Transfer Request"), + + cirExtensionRequest("cirExtensionRequest", "CIR Extension Request"), + guardianReport("guardianReport", "Guardian report"), specialGuardianshipReport("specialGuardianshipReport", "Special guardianship report"), diff --git a/src/main/java/uk/gov/hmcts/reform/prl/models/complextypes/QuarantineLegalDoc.java b/src/main/java/uk/gov/hmcts/reform/prl/models/complextypes/QuarantineLegalDoc.java index 5411b1896b0..ee6a48ab046 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/models/complextypes/QuarantineLegalDoc.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/models/complextypes/QuarantineLegalDoc.java @@ -47,6 +47,8 @@ public class QuarantineLegalDoc { private final Document section7ReportDocument; private final Document section37ReportDocument; private final Document sixteenARiskAssessmentDocument; // 16aRiskAssessment + private final Document cirTransferRequestDocument; + private final Document cirExtensionRequestDocument; private final Document guardianReportDocument; private final Document specialGuardianshipReportDocument; private final Document otherDocsDocument; diff --git a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java index fdb03355822..cdd1920c2b5 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java @@ -44,8 +44,14 @@ public class CafcassUploadDocService { public static final List ALLOWED_FILE_TYPES = List.of("pdf", "docx"); + public static final List URGENT_CAFCASS_DOC_TYPES = List.of( + "CIR_Transfer", "CIR_Extension", "S_16A_Risk_Assessment" + ); + public static final String MANAGE_DOCUMENTS_URGENT_DOC_TYPE = "manageDocumentsUrgentDocType"; + public static final List ALLOWED_TYPE_OF_DOCS = List.of( - "16_4_Report", "CR_1", "CR_2", "CIR_Part1", "CIR_Part2", "CIR_Review", "CMO_report", + "16_4_Report", "CR_1", "CR_2", "CIR_Part1", "CIR_Part2", "CIR_Review", "CIR_Transfer", "CIR_Extension", + "CMO_report", "Contact_Centre_Recordings", "Correspondence", "Direct_work", "Enforcement_report", "FAO_Report", "FAO_Workplan", "Letter_from_Child", "Other_Non_Section_7_Report", "Position_Statement", "Positive_Parenting_Programme_Report", "Re_W_Report", @@ -107,6 +113,12 @@ private void updateCcdAfterUploadingDocument(MultipartFile document, String type caseDataUpdated.putIfAbsent(MANAGE_DOCUMENTS_TRIGGERED_BY, null); + if (URGENT_CAFCASS_DOC_TYPES.contains(typeOfDocument)) { + caseDataUpdated.put(MANAGE_DOCUMENTS_URGENT_DOC_TYPE, typeOfDocument); + } else { + caseDataUpdated.put(MANAGE_DOCUMENTS_URGENT_DOC_TYPE, null); + } + manageDocumentsService.moveDocumentsToQuarantineTab( quarantineLegalDoc, startAllTabsUpdateDataContent.caseData(), @@ -190,6 +202,8 @@ private static Map createDocumentTypeMap() map.put("CIR_Part1", CafcassReportAndGuardianEnum.section7Report); map.put("CIR_Part2", CafcassReportAndGuardianEnum.section7Report); map.put("CIR_Review", CafcassReportAndGuardianEnum.section7Report); + map.put("CIR_Transfer", CafcassReportAndGuardianEnum.cirTransferRequest); + map.put("CIR_Extension", CafcassReportAndGuardianEnum.cirExtensionRequest); map.put("CMO_report", CafcassReportAndGuardianEnum.otherDocs); map.put("Contact_Centre_Recordings", CafcassReportAndGuardianEnum.otherDocs); map.put("Correspondence", CafcassReportAndGuardianEnum.otherDocs); From f3c652a6e351ea09e939d7bdfb724443a1a7dd87 Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Thu, 26 Mar 2026 12:52:04 +0000 Subject: [PATCH 02/10] FPVTL-2412: added tests --- .../cafcass/CafcassUploadDocServiceTest.java | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java index d63baad1fab..282ed0cc473 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java @@ -27,6 +27,7 @@ import uk.gov.hmcts.reform.prl.services.tab.alltabs.AllTabServiceImpl; import java.util.List; +import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -36,6 +37,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.MANAGE_DOCUMENTS_URGENT_DOC_TYPE; import static uk.gov.hmcts.reform.prl.utils.TestConstants.TEST_CASE_ID; @ExtendWith(MockitoExtension.class) @@ -172,6 +174,138 @@ void shouldThrowExceptionWhenFilenameIsNull() { ); } + @Test + void shouldAcceptCirTransferDocumentType() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + Document document = testDocument(); + UploadResponse uploadResponse = new UploadResponse(List.of(document)); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, + EventRequestData.builder().build(), + StartEventResponse.builder().build(), + caseData.toMap(new ObjectMapper()), + caseData, + null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Transfer", TEST_CASE_ID); + + verify(allTabService, times(1)).submitAllTabsUpdate(any(), any(), any(), any(), any()); + } + + @Test + void shouldAcceptCirExtensionDocumentType() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + Document document = testDocument(); + UploadResponse uploadResponse = new UploadResponse(List.of(document)); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, + EventRequestData.builder().build(), + StartEventResponse.builder().build(), + caseData.toMap(new ObjectMapper()), + caseData, + null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Extension", TEST_CASE_ID); + + verify(allTabService, times(1)).submitAllTabsUpdate(any(), any(), any(), any(), any()); + } + + @Test + @SuppressWarnings("unchecked") + void shouldSetUrgentDocTypeForCirTransfer() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + UploadResponse uploadResponse = new UploadResponse(List.of(testDocument())); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + Map caseDataMap = caseData.toMap(new ObjectMapper()); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, EventRequestData.builder().build(), StartEventResponse.builder().build(), + caseDataMap, caseData, null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Transfer", TEST_CASE_ID); + + assertEquals("CIR_Transfer", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + } + + @Test + @SuppressWarnings("unchecked") + void shouldSetUrgentDocTypeForCirExtension() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + UploadResponse uploadResponse = new UploadResponse(List.of(testDocument())); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + Map caseDataMap = caseData.toMap(new ObjectMapper()); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, EventRequestData.builder().build(), StartEventResponse.builder().build(), + caseDataMap, caseData, null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Extension", TEST_CASE_ID); + + assertEquals("CIR_Extension", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + } + + @Test + @SuppressWarnings("unchecked") + void shouldSetUrgentDocTypeFor16aRiskAssessment() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + UploadResponse uploadResponse = new UploadResponse(List.of(testDocument())); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + Map caseDataMap = caseData.toMap(new ObjectMapper()); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, EventRequestData.builder().build(), StartEventResponse.builder().build(), + caseDataMap, caseData, null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "S_16A_Risk_Assessment", TEST_CASE_ID); + + assertEquals("S_16A_Risk_Assessment", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + } + + @Test + @SuppressWarnings("unchecked") + void shouldSetUrgentDocTypeToNullForNonUrgentDocumentType() { + when(authTokenGenerator.generate()).thenReturn(s2sToken); + UploadResponse uploadResponse = new UploadResponse(List.of(testDocument())); + CaseDetails caseDetails = CaseDetails.builder().id(Long.parseLong(TEST_CASE_ID)).build(); + Map caseDataMap = caseData.toMap(new ObjectMapper()); + StartAllTabsUpdateDataContent updateData = new StartAllTabsUpdateDataContent( + authToken, EventRequestData.builder().build(), StartEventResponse.builder().build(), + caseDataMap, caseData, null + ); + + when(coreCaseDataApi.getCase(authToken, s2sToken, TEST_CASE_ID)).thenReturn(caseDetails); + when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); + when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); + + cafcassUploadDocService.uploadDocument(authToken, file, "16_4_Report", TEST_CASE_ID); + + assertNull(caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + } + @Test void shouldReturnNullIfCasePresentThrowsException() { when(authTokenGenerator.generate()).thenReturn(s2sToken); From 0bb5bb7ff38109b775cd84d9840d2243be76ca29 Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Thu, 26 Mar 2026 13:25:46 +0000 Subject: [PATCH 03/10] FPVTL-2412: fixed sonar issues --- .../cafcass/CafcassUploadDocService.java | 18 ++++++++++++------ .../cafcass/CafcassUploadDocServiceTest.java | 19 +++++++++++-------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java index cdd1920c2b5..b6d0c5c3b75 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java @@ -44,18 +44,24 @@ public class CafcassUploadDocService { public static final List ALLOWED_FILE_TYPES = List.of("pdf", "docx"); + + static final String DOC_TYPE_CIR_TRANSFER = "CIR_Transfer"; + static final String DOC_TYPE_CIR_EXTENSION = "CIR_Extension"; + static final String DOC_TYPE_S16A_RISK_ASSESSMENT = "S_16A_Risk_Assessment"; + public static final List URGENT_CAFCASS_DOC_TYPES = List.of( - "CIR_Transfer", "CIR_Extension", "S_16A_Risk_Assessment" + DOC_TYPE_CIR_TRANSFER, DOC_TYPE_CIR_EXTENSION, DOC_TYPE_S16A_RISK_ASSESSMENT ); public static final String MANAGE_DOCUMENTS_URGENT_DOC_TYPE = "manageDocumentsUrgentDocType"; public static final List ALLOWED_TYPE_OF_DOCS = List.of( - "16_4_Report", "CR_1", "CR_2", "CIR_Part1", "CIR_Part2", "CIR_Review", "CIR_Transfer", "CIR_Extension", + "16_4_Report", "CR_1", "CR_2", "CIR_Part1", "CIR_Part2", "CIR_Review", + DOC_TYPE_CIR_TRANSFER, DOC_TYPE_CIR_EXTENSION, "CMO_report", "Contact_Centre_Recordings", "Correspondence", "Direct_work", "Enforcement_report", "FAO_Report", "FAO_Workplan", "Letter_from_Child", "Other_Non_Section_7_Report", "Position_Statement", "Positive_Parenting_Programme_Report", "Re_W_Report", - "S_11H_Monitoring", "S_16A_Risk_Assessment", "Safeguarding_Letter", + "S_11H_Monitoring", DOC_TYPE_S16A_RISK_ASSESSMENT, "Safeguarding_Letter", "Safeguarding_Letter_Returner", "Safeguarding_Letter_Shorter_Template", "Safeguarding_Letter_Update", "Second_Gatekeeping_Safeguarding_Letter", "Section7_Addendum_Report", "Section7_Report_Child_Impact_Analysis", "Suitability_report" @@ -202,8 +208,8 @@ private static Map createDocumentTypeMap() map.put("CIR_Part1", CafcassReportAndGuardianEnum.section7Report); map.put("CIR_Part2", CafcassReportAndGuardianEnum.section7Report); map.put("CIR_Review", CafcassReportAndGuardianEnum.section7Report); - map.put("CIR_Transfer", CafcassReportAndGuardianEnum.cirTransferRequest); - map.put("CIR_Extension", CafcassReportAndGuardianEnum.cirExtensionRequest); + map.put(DOC_TYPE_CIR_TRANSFER, CafcassReportAndGuardianEnum.cirTransferRequest); + map.put(DOC_TYPE_CIR_EXTENSION, CafcassReportAndGuardianEnum.cirExtensionRequest); map.put("CMO_report", CafcassReportAndGuardianEnum.otherDocs); map.put("Contact_Centre_Recordings", CafcassReportAndGuardianEnum.otherDocs); map.put("Correspondence", CafcassReportAndGuardianEnum.otherDocs); @@ -217,7 +223,7 @@ private static Map createDocumentTypeMap() map.put("Positive_Parenting_Programme_Report", CafcassReportAndGuardianEnum.otherDocs); map.put("Re_W_Report", CafcassReportAndGuardianEnum.otherDocs); map.put("S_11H_Monitoring", CafcassReportAndGuardianEnum.otherDocs); - map.put("S_16A_Risk_Assessment", CafcassReportAndGuardianEnum.riskAssessment); + map.put(DOC_TYPE_S16A_RISK_ASSESSMENT, CafcassReportAndGuardianEnum.riskAssessment); map.put("Safeguarding_Letter", CafcassReportAndGuardianEnum.safeguardingLetter); map.put("Safeguarding_Letter_Returner", CafcassReportAndGuardianEnum.safeguardingLetter); map.put("Safeguarding_Letter_Shorter_Template", CafcassReportAndGuardianEnum.safeguardingLetter); diff --git a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java index 282ed0cc473..17188ca251a 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java @@ -37,6 +37,9 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_CIR_EXTENSION; +import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_CIR_TRANSFER; +import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_S16A_RISK_ASSESSMENT; import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.MANAGE_DOCUMENTS_URGENT_DOC_TYPE; import static uk.gov.hmcts.reform.prl.utils.TestConstants.TEST_CASE_ID; @@ -193,7 +196,7 @@ void shouldAcceptCirTransferDocumentType() { when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); - cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Transfer", TEST_CASE_ID); + cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_TRANSFER, TEST_CASE_ID); verify(allTabService, times(1)).submitAllTabsUpdate(any(), any(), any(), any(), any()); } @@ -217,7 +220,7 @@ void shouldAcceptCirExtensionDocumentType() { when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); - cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Extension", TEST_CASE_ID); + cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_EXTENSION, TEST_CASE_ID); verify(allTabService, times(1)).submitAllTabsUpdate(any(), any(), any(), any(), any()); } @@ -238,9 +241,9 @@ void shouldSetUrgentDocTypeForCirTransfer() { when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); - cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Transfer", TEST_CASE_ID); + cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_TRANSFER, TEST_CASE_ID); - assertEquals("CIR_Transfer", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_CIR_TRANSFER, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); } @Test @@ -259,9 +262,9 @@ void shouldSetUrgentDocTypeForCirExtension() { when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); - cafcassUploadDocService.uploadDocument(authToken, file, "CIR_Extension", TEST_CASE_ID); + cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_EXTENSION, TEST_CASE_ID); - assertEquals("CIR_Extension", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_CIR_EXTENSION, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); } @Test @@ -280,9 +283,9 @@ void shouldSetUrgentDocTypeFor16aRiskAssessment() { when(caseDocumentClient.uploadDocuments(any(), any(), any(), any(), any())).thenReturn(uploadResponse); when(allTabService.getStartUpdateForSpecificEvent(anyString(), anyString())).thenReturn(updateData); - cafcassUploadDocService.uploadDocument(authToken, file, "S_16A_Risk_Assessment", TEST_CASE_ID); + cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_S16A_RISK_ASSESSMENT, TEST_CASE_ID); - assertEquals("S_16A_Risk_Assessment", caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_S16A_RISK_ASSESSMENT, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); } @Test From 6ce20c556e2ecd57899e0ef83b24ca81176183bc Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Thu, 26 Mar 2026 15:40:10 +0000 Subject: [PATCH 04/10] FPVTL-2412: resolved merge conflicts in build.gradle --- build.gradle | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/build.gradle b/build.gradle index 5038d9606d8..24651db9ea2 100644 --- a/build.gradle +++ b/build.gradle @@ -473,16 +473,6 @@ dependencies { integrationTestImplementation(sourceSets.test.output) } -task fortifyScan(type: JavaExec) { - if (GradleVersion.current() >= GradleVersion.version('9.0')) { - mainClass.set("uk.gov.hmcts.fortifyclient.FortifyClientMainApp") - } else { - main = "uk.gov.hmcts.fortifyclient.FortifyClientMainApp" - } - classpath += sourceSets.test.runtimeClasspath - jvmArgs = ['--add-opens=java.base/java.lang.reflect=ALL-UNNAMED'] -} - processContractTestResources { duplicatesStrategy = DuplicatesStrategy.INCLUDE } From 2b7928e9b335f051790e3acac607e71c74c173eb Mon Sep 17 00:00:00 2001 From: Alejandro Ramon Fernandez Date: Thu, 26 Mar 2026 15:43:38 +0000 Subject: [PATCH 05/10] FPVTL-2431 - Update local env acr commands (#3686) * Update local env acr commands * FPVTL-2431: Update docuemtation re Azur acr update --- docs/cftlib.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cftlib.md b/docs/cftlib.md index 383ab43f084..4ea660998fd 100644 --- a/docs/cftlib.md +++ b/docs/cftlib.md @@ -26,7 +26,7 @@ There is currently no support for The first time cftlib is run it needs to download Docker images from the Azure Registry. You must therefore login to Azure as follows: ```bash -az acr login --name hmctspublic --subscription DCD-CNP-Prod +az acr login --name hmctsprod --subscription DCD-CNP-Prod az acr login --name hmctsprivate --subscription DCD-CNP-Prod ``` From 6e6f2ed52953019232f02b7f2231fbe09795b5b5 Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Fri, 27 Mar 2026 11:22:10 +0000 Subject: [PATCH 06/10] FPVTL-2412: added FTs --- .../CafcassUploadDocumentFunctionalTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java b/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java index d626d47ec27..2021477c207 100644 --- a/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java +++ b/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java @@ -91,4 +91,38 @@ public void givenValidDocumentData_then200Response() throws IOException { .body("message", equalTo("Document has been uploaded successfully: Dummy_pdf_file.pdf")); } + + @Test + @Order(3) + public void givenCirTransferDocument_then200Response() throws IOException { + final File fileToUpload = readFile(CAFCASS_DUMMY_UPLOAD_FILE); + + request + .header("Authorization", idamTokenGenerator.generateIdamTokenForCafcass()) + .header("ServiceAuthorization", serviceAuthenticationGenerator.generateTokenForCcd()) + .multiPart("file", fileToUpload) + .param("typeOfDocument", "CIR_Transfer") + .pathParam("caseId", caseDetails.getId()) + .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) + .post("/{caseId}/document") + .then().assertThat().statusCode(200) + .body("message", equalTo("Document has been uploaded successfully: Dummy_pdf_file.pdf")); + } + + @Test + @Order(4) + public void givenCirExtensionDocument_then200Response() throws IOException { + final File fileToUpload = readFile(CAFCASS_DUMMY_UPLOAD_FILE); + + request + .header("Authorization", idamTokenGenerator.generateIdamTokenForCafcass()) + .header("ServiceAuthorization", serviceAuthenticationGenerator.generateTokenForCcd()) + .multiPart("file", fileToUpload) + .param("typeOfDocument", "CIR_Extension") + .pathParam("caseId", caseDetails.getId()) + .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) + .post("/{caseId}/document") + .then().assertThat().statusCode(200) + .body("message", equalTo("Document has been uploaded successfully: Dummy_pdf_file.pdf")); + } } From aa6ccfc71749540efad88683a88023d9e55b0dc7 Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Fri, 27 Mar 2026 18:47:13 +0000 Subject: [PATCH 07/10] FPVTL-2412 : refactored uploaded document category variable name --- .../prl/services/cafcass/CafcassUploadDocService.java | 6 +++--- .../services/cafcass/CafcassUploadDocServiceTest.java | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java index b6d0c5c3b75..873d4bef461 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java @@ -52,7 +52,7 @@ public class CafcassUploadDocService { public static final List URGENT_CAFCASS_DOC_TYPES = List.of( DOC_TYPE_CIR_TRANSFER, DOC_TYPE_CIR_EXTENSION, DOC_TYPE_S16A_RISK_ASSESSMENT ); - public static final String MANAGE_DOCUMENTS_URGENT_DOC_TYPE = "manageDocumentsUrgentDocType"; + public static final String MANAGE_DOC_UPLOADED_CATEGORY = "manageDocUploadedCategory"; public static final List ALLOWED_TYPE_OF_DOCS = List.of( "16_4_Report", "CR_1", "CR_2", "CIR_Part1", "CIR_Part2", "CIR_Review", @@ -120,9 +120,9 @@ private void updateCcdAfterUploadingDocument(MultipartFile document, String type caseDataUpdated.putIfAbsent(MANAGE_DOCUMENTS_TRIGGERED_BY, null); if (URGENT_CAFCASS_DOC_TYPES.contains(typeOfDocument)) { - caseDataUpdated.put(MANAGE_DOCUMENTS_URGENT_DOC_TYPE, typeOfDocument); + caseDataUpdated.put(MANAGE_DOC_UPLOADED_CATEGORY, typeOfDocument); } else { - caseDataUpdated.put(MANAGE_DOCUMENTS_URGENT_DOC_TYPE, null); + caseDataUpdated.put(MANAGE_DOC_UPLOADED_CATEGORY, null); } manageDocumentsService.moveDocumentsToQuarantineTab( diff --git a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java index 17188ca251a..7c20bf3c453 100644 --- a/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java +++ b/src/test/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocServiceTest.java @@ -40,7 +40,7 @@ import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_CIR_EXTENSION; import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_CIR_TRANSFER; import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.DOC_TYPE_S16A_RISK_ASSESSMENT; -import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.MANAGE_DOCUMENTS_URGENT_DOC_TYPE; +import static uk.gov.hmcts.reform.prl.services.cafcass.CafcassUploadDocService.MANAGE_DOC_UPLOADED_CATEGORY; import static uk.gov.hmcts.reform.prl.utils.TestConstants.TEST_CASE_ID; @ExtendWith(MockitoExtension.class) @@ -243,7 +243,7 @@ void shouldSetUrgentDocTypeForCirTransfer() { cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_TRANSFER, TEST_CASE_ID); - assertEquals(DOC_TYPE_CIR_TRANSFER, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_CIR_TRANSFER, caseDataMap.get(MANAGE_DOC_UPLOADED_CATEGORY)); } @Test @@ -264,7 +264,7 @@ void shouldSetUrgentDocTypeForCirExtension() { cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_CIR_EXTENSION, TEST_CASE_ID); - assertEquals(DOC_TYPE_CIR_EXTENSION, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_CIR_EXTENSION, caseDataMap.get(MANAGE_DOC_UPLOADED_CATEGORY)); } @Test @@ -285,7 +285,7 @@ void shouldSetUrgentDocTypeFor16aRiskAssessment() { cafcassUploadDocService.uploadDocument(authToken, file, DOC_TYPE_S16A_RISK_ASSESSMENT, TEST_CASE_ID); - assertEquals(DOC_TYPE_S16A_RISK_ASSESSMENT, caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertEquals(DOC_TYPE_S16A_RISK_ASSESSMENT, caseDataMap.get(MANAGE_DOC_UPLOADED_CATEGORY)); } @Test @@ -306,7 +306,7 @@ void shouldSetUrgentDocTypeToNullForNonUrgentDocumentType() { cafcassUploadDocService.uploadDocument(authToken, file, "16_4_Report", TEST_CASE_ID); - assertNull(caseDataMap.get(MANAGE_DOCUMENTS_URGENT_DOC_TYPE)); + assertNull(caseDataMap.get(MANAGE_DOC_UPLOADED_CATEGORY)); } @Test From 442b24a7c5ceaea6f61525942b02e3d9095860fb Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Mon, 30 Mar 2026 10:00:36 +0100 Subject: [PATCH 08/10] FPVTL-2412 : excluded the cafcass england doc category from bundling --- .gitignore | 8 ++++++ .../bundle/BundleCreateRequestMapper.java | 8 ------ .../bundle/BundleCreateRequestMapperTest.java | 26 ++++++++++++++----- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 1da3c126d12..aaa9fe7b428 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,11 @@ src/main/resources/application.yaml /.aat-env /bin/ccd-config-PRL-local.xlsx /.mirrord/mirrord.json +/node_modules/.yarn-integrity +/node_modules/.yarn-state.yml +/.yarnrc.yml +/gradle-8.7-bin.zip +/.yarn/install-state.gz +/package.json +/yarn.lock +/.yarn/releases/yarn-4.12.0.cjs diff --git a/src/main/java/uk/gov/hmcts/reform/prl/mapper/bundle/BundleCreateRequestMapper.java b/src/main/java/uk/gov/hmcts/reform/prl/mapper/bundle/BundleCreateRequestMapper.java index 2460e569c52..a981ca9e293 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/mapper/bundle/BundleCreateRequestMapper.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/mapper/bundle/BundleCreateRequestMapper.java @@ -70,7 +70,6 @@ import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.SEC37_REPORT; import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.SECTION7_REPORT; import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.SECTION_37_REPORT; -import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.SIXTEEN_A_RISK_ASSESSMENT; import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.SPECIAL_GUARDIANSHIP_REPORT; import static uk.gov.hmcts.reform.prl.constants.ManageDocumentsCategoryConstants.TRANSCRIPTS_OF_JUDGEMENTS; import static uk.gov.hmcts.reform.prl.constants.PrlAppsConstants.BLANK_STRING; @@ -605,13 +604,6 @@ private static void mapCafcassLaReports(QuarantineLegalDoc doc, HashMap List.of("policeDisclosures", "medicalRecords", "anyOtherDocuments") + .filter(fileName -> List.of("policeDisclosures", "medicalRecords", "anyOtherDocuments", + "16ARiskAssessment", "cirTransferRequest", "cirExtensionRequest") .contains(fileName)).toList()) .asInstanceOf(LIST).isEmpty(); } From a35b32cc658569f4bc0c9cabc1911b10e6654993 Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Mon, 30 Mar 2026 13:29:59 +0100 Subject: [PATCH 09/10] FPVTL-2412 : FT failure in cos api resolved --- .../reform/prl/services/cafcass/CafcassUploadDocService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java index 873d4bef461..029fc5133fb 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java @@ -121,8 +121,6 @@ private void updateCcdAfterUploadingDocument(MultipartFile document, String type if (URGENT_CAFCASS_DOC_TYPES.contains(typeOfDocument)) { caseDataUpdated.put(MANAGE_DOC_UPLOADED_CATEGORY, typeOfDocument); - } else { - caseDataUpdated.put(MANAGE_DOC_UPLOADED_CATEGORY, null); } manageDocumentsService.moveDocumentsToQuarantineTab( From ed5eb050a8fa9c15f53c50807b900a95c2b8903c Mon Sep 17 00:00:00 2001 From: mrafeeqhmcts Date: Mon, 30 Mar 2026 16:25:31 +0100 Subject: [PATCH 10/10] FPVTL-2412 : integrated with DMN Changes --- .../cafcass/CafcassUploadDocumentFunctionalTest.java | 4 ++-- .../prl/services/cafcass/CafcassUploadDocService.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java b/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java index 2021477c207..4074a725c33 100644 --- a/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java +++ b/src/functionalTest/java/uk/gov/hmcts/reform/prl/controllers/cafcass/CafcassUploadDocumentFunctionalTest.java @@ -101,7 +101,7 @@ public void givenCirTransferDocument_then200Response() throws IOException { .header("Authorization", idamTokenGenerator.generateIdamTokenForCafcass()) .header("ServiceAuthorization", serviceAuthenticationGenerator.generateTokenForCcd()) .multiPart("file", fileToUpload) - .param("typeOfDocument", "CIR_Transfer") + .param("typeOfDocument", "cirTransferRequest") .pathParam("caseId", caseDetails.getId()) .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) .post("/{caseId}/document") @@ -118,7 +118,7 @@ public void givenCirExtensionDocument_then200Response() throws IOException { .header("Authorization", idamTokenGenerator.generateIdamTokenForCafcass()) .header("ServiceAuthorization", serviceAuthenticationGenerator.generateTokenForCcd()) .multiPart("file", fileToUpload) - .param("typeOfDocument", "CIR_Extension") + .param("typeOfDocument", "cirExtensionRequest") .pathParam("caseId", caseDetails.getId()) .contentType(MediaType.MULTIPART_FORM_DATA_VALUE) .post("/{caseId}/document") diff --git a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java index 029fc5133fb..9f0447db380 100644 --- a/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java +++ b/src/main/java/uk/gov/hmcts/reform/prl/services/cafcass/CafcassUploadDocService.java @@ -45,9 +45,9 @@ public class CafcassUploadDocService { public static final List ALLOWED_FILE_TYPES = List.of("pdf", "docx"); - static final String DOC_TYPE_CIR_TRANSFER = "CIR_Transfer"; - static final String DOC_TYPE_CIR_EXTENSION = "CIR_Extension"; - static final String DOC_TYPE_S16A_RISK_ASSESSMENT = "S_16A_Risk_Assessment"; + static final String DOC_TYPE_CIR_TRANSFER = "cirTransferRequest"; + static final String DOC_TYPE_CIR_EXTENSION = "cirExtensionRequest"; + static final String DOC_TYPE_S16A_RISK_ASSESSMENT = "16aRiskAssessment"; public static final List URGENT_CAFCASS_DOC_TYPES = List.of( DOC_TYPE_CIR_TRANSFER, DOC_TYPE_CIR_EXTENSION, DOC_TYPE_S16A_RISK_ASSESSMENT