From f9c36725773e9a0101543fb01d819f1b49605c79 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 18 May 2026 12:10:03 +0100
Subject: [PATCH 01/16] Added additional document page
---
.../LegalRepDocumentUploadConfigurerTest.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
index 18b2f60454..b95b7a70ba 100644
--- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
+++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
@@ -46,6 +46,7 @@ void shouldConfigurePagesInCorrectOrder() {
verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount);
verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount);
+// verifyAndCount(inOrder, pageBuilder, UploadDocumentsPage.class, verificationCount);
int numberOfPages = pageCaptor.getAllValues().size();
assertThat(verificationCount.get()).isEqualTo(numberOfPages);
From b5ac28c1adcb6ccd25fc598291122006dba56eff Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 18 May 2026 16:39:34 +0100
Subject: [PATCH 02/16] Added new screen to configurer and updated test
---
.../LegalRepDocument.java | 32 +++++++++++++
.../LegalRepDocumentType.java | 18 ++++++++
.../LegalRepDocumentUploadConfigurer.java | 3 +-
.../UploadAdditionalDocumentsPage.java | 45 +++++++++++++++++++
.../LegalRepDocumentUploadConfigurerTest.java | 2 +-
5 files changed, 98 insertions(+), 2 deletions(-)
create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
new file mode 100644
index 0000000000..033ba22b87
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
@@ -0,0 +1,32 @@
+package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import uk.gov.hmcts.ccd.sdk.api.CCD;
+import uk.gov.hmcts.ccd.sdk.type.Document;
+import uk.gov.hmcts.ccd.sdk.type.FieldType;
+import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class LegalRepDocument {
+
+ @CCD(
+ label = "Type of document",
+ typeOverride = FieldType.FixedList,
+ typeParameterOverride = "EvidenceDocumentType"
+ )
+ private EvidenceDocumentType documentType;
+
+ @CCD(label = "Document")
+ private Document document;
+
+ @CCD(label = "Short description",
+ max = 62
+ )
+ private String description;
+}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
new file mode 100644
index 0000000000..a660edd45d
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
@@ -0,0 +1,18 @@
+package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import uk.gov.hmcts.ccd.sdk.api.HasLabel;
+
+@AllArgsConstructor
+@Getter
+public enum LegalRepDocumentType implements HasLabel {
+
+ PHOTOGRAPHIC_EVIDENCE("Photographic evidence"),
+ POLICE_REPORT("Police report"),
+ WITNESS_STATEMENT("Witness statement"),
+ OTHER("Other document");
+
+ private final String label;
+
+}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
index 543c995060..e27314256c 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
@@ -13,6 +13,7 @@ public class LegalRepDocumentUploadConfigurer implements PageConfigurer {
public void configurePages(PageBuilder pageBuilder) {
pageBuilder
.add(new UploadAdditionalDocumentsInformationPage())
- .add(new ExistingApplicationPage());
+ .add(new ExistingApplicationPage())
+ .add(new UploadAdditionalDocumentsPage());
}
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
new file mode 100644
index 0000000000..f62dc71ebd
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -0,0 +1,45 @@
+package uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload;
+
+import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
+import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
+import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload;
+import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
+
+public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage {
+
+ public static final String DOCUMENT_DETAILS_CONTENT = """
+
+ You should only upload documents that are relevant to your application.
+
+
+
+ Before you upload the document, give it a name that tells the court what it is, for example
+ ‘witness statement’, or ‘tenancy agreement’.
+
+
+
+ You can upload the following file types: DOC/DOCX (Word), XLS/XLSM (Excel), PPT/PPTX (PowerPoint)
+ , PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP, TIF/TIFF.
+
+ """;
+
+ @Override
+ public void addTo(PageBuilder pageBuilder) {
+ String pageKey = getPageKey();
+ pageBuilder
+ .page(pageKey)
+ .pageLabel("Upload your documents")
+ .label(pageKey + "-line-separator", "---")
+ .label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
+ .complex(PCSCase::getLegalRepDocumentUpload)
+ .mandatory(LegalRepDocumentUpload::getAdditionalDocuments)
+ .done()
+ .build();
+ }
+
+ @Override
+ public String getPageKey() {
+ return CcdPage.derivePageKey(this.getClass());
+ }
+}
diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
index e30e19ca7e..f4ddc6644d 100644
--- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
+++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurerTest.java
@@ -46,7 +46,7 @@ void shouldConfigurePagesInCorrectOrder() {
verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsInformationPage.class, verificationCount);
verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount);
-// verifyAndCount(inOrder, pageBuilder, UploadDocumentsPage.class, verificationCount);
+ verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount);
int numberOfPages = pageCaptor.getAllValues().size();
assertThat(verificationCount.get()).isEqualTo(numberOfPages);
From c1a76a421014efb93e3bd17aa63143a192042eae Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 18 May 2026 16:43:53 +0100
Subject: [PATCH 03/16] Adding legal rep document upload class
---
.../legalrepdocumentupload/LegalRepDocumentUpload.java | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
index 254319f357..62f12ef38e 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
@@ -7,6 +7,9 @@
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;
+import uk.gov.hmcts.ccd.sdk.type.ListValue;
+
+import java.util.List;
@Builder
@Data
@@ -20,4 +23,10 @@ public class LegalRepDocumentUpload {
)
@JsonProperty("DocumentUploadCategories")
private DocumentUploadCategory uploadCategories;
+
+ @CCD(
+ label = "Add document",
+ hint = "Upload a document to the system"
+ )
+ private List> additionalDocuments;
}
From 4f9d0b552397a30b64309212082d4f2bfc2d2585 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Tue, 19 May 2026 09:36:37 +0100
Subject: [PATCH 04/16] changed name of additional documents and updated
document content
---
.../LegalRepDocumentUpload.java | 2 +-
.../UploadAdditionalDocumentsPage.java | 20 ++++++++++++++-----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
index 62f12ef38e..f98ba99fba 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUpload.java
@@ -28,5 +28,5 @@ public class LegalRepDocumentUpload {
label = "Add document",
hint = "Upload a document to the system"
)
- private List> additionalDocuments;
+ private List> legalRepDocuments;
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index f62dc71ebd..b59e7270c7 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -14,14 +14,24 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP
- Before you upload the document, give it a name that tells the court what it is, for example
- ‘witness statement’, or ‘tenancy agreement’.
+ Before you upload the document, give it a name that tells the court what it is,
+ for example, ‘witness statement’, or ‘tenancy agreement’.
- You can upload the following file types: DOC/DOCX (Word), XLS/XLSM (Excel), PPT/PPTX (PowerPoint)
- , PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP, TIF/TIFF.
+ You can upload the following file types: DOC/DOCX (Word), XLS/XLSM
+ (Excel), PPT/PPTX (PowerPoint), PDF, RTF, TXT, CSV, JPG/JPEG, PNG, BMP,
+ TIF/TIFF.
+
+
+ Before you upload your documents
+
+
+
+ Give your document a name that explains what it is. \s
+
+
""";
@Override
@@ -33,7 +43,7 @@ public void addTo(PageBuilder pageBuilder) {
.label(pageKey + "-line-separator", "---")
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
.complex(PCSCase::getLegalRepDocumentUpload)
- .mandatory(LegalRepDocumentUpload::getAdditionalDocuments)
+ .mandatory(LegalRepDocumentUpload::getLegalRepDocuments)
.done()
.build();
}
From d2b7a2881f7cdb79b745bacb4ee3f7e2bc743629 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Wed, 20 May 2026 10:49:16 +0100
Subject: [PATCH 05/16] updated the additional document page with common page
content
---
.../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index b59e7270c7..801f6004d5 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -5,6 +5,7 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload;
import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
+import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage {
@@ -44,6 +45,7 @@ public void addTo(PageBuilder pageBuilder) {
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
.complex(PCSCase::getLegalRepDocumentUpload)
.mandatory(LegalRepDocumentUpload::getLegalRepDocuments)
+ .label("uploadAdditionalDocuments-saveAndReturn", CommonPageContent.SAVE_AND_RETURN)
.done()
.build();
}
@@ -52,4 +54,5 @@ public void addTo(PageBuilder pageBuilder) {
public String getPageKey() {
return CcdPage.derivePageKey(this.getClass());
}
+
}
From 2ce7ec40ebf705c12aa516d2ddf1ec20fa755c08 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Wed, 20 May 2026 16:39:56 +0100
Subject: [PATCH 06/16] Removed save and return common page content
---
.../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index 801f6004d5..b59e7270c7 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -5,7 +5,6 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload;
import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
-import uk.gov.hmcts.reform.pcs.ccd.page.CommonPageContent;
public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage {
@@ -45,7 +44,6 @@ public void addTo(PageBuilder pageBuilder) {
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
.complex(PCSCase::getLegalRepDocumentUpload)
.mandatory(LegalRepDocumentUpload::getLegalRepDocuments)
- .label("uploadAdditionalDocuments-saveAndReturn", CommonPageContent.SAVE_AND_RETURN)
.done()
.build();
}
@@ -54,5 +52,4 @@ public void addTo(PageBuilder pageBuilder) {
public String getPageKey() {
return CcdPage.derivePageKey(this.getClass());
}
-
}
From c875f9ebdcd8a717f570bf05adf0277bb29c427c Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Thu, 21 May 2026 14:33:39 +0100
Subject: [PATCH 07/16] HDPI-6404 Updated character limit and persisted case
data
---
.../LegalRepDocument.java | 2 +-
.../LegalRepDocumentUploadDetails.java | 8 ++-
.../LegalRepDocumentUploadConfigurer.java | 4 +-
.../UploadAdditionalDocumentsPage.java | 55 +++++++++++++++++--
...epDocumentUploadDetailsConfigurerTest.java | 6 +-
5 files changed, 67 insertions(+), 8 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
index 033ba22b87..2ddc653029 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
@@ -26,7 +26,7 @@ public class LegalRepDocument {
private Document document;
@CCD(label = "Short description",
- max = 62
+ max = 60
)
private String description;
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
index cdee07e095..40d9a695d5 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
@@ -7,6 +7,12 @@
import lombok.Data;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.ccd.sdk.api.CCD;
+import uk.gov.hmcts.ccd.sdk.type.ListValue;
+import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList;
+
+import java.util.List;
+
+import static uk.gov.hmcts.ccd.sdk.type.FieldType.DynamicRadioList;
@Builder
@Data
@@ -22,7 +28,7 @@ public class LegalRepDocumentUploadDetails {
)
@JsonProperty("DocumentUploadCategories")
private DynamicStringList validCategories;
-
+
@CCD(
label = "Add document",
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
index e27314256c..036c29ff63 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadConfigurer.java
@@ -9,11 +9,13 @@
@AllArgsConstructor
public class LegalRepDocumentUploadConfigurer implements PageConfigurer {
+ private final UploadAdditionalDocumentsPage uploadAdditionalDocumentsPage;
+
@Override
public void configurePages(PageBuilder pageBuilder) {
pageBuilder
.add(new UploadAdditionalDocumentsInformationPage())
.add(new ExistingApplicationPage())
- .add(new UploadAdditionalDocumentsPage());
+ .add(uploadAdditionalDocumentsPage);
}
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index b59e7270c7..001f454808 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -1,13 +1,29 @@
package uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Component;
+import uk.gov.hmcts.ccd.sdk.api.CaseDetails;
+import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse;
+import uk.gov.hmcts.ccd.sdk.type.ListValue;
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
-import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUpload;
+import uk.gov.hmcts.reform.pcs.ccd.domain.State;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails;
import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
+import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService;
+import uk.gov.hmcts.reform.pcs.ccd.util.StringUtils;
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+@AllArgsConstructor
public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdPage {
+ private static final String DESCRIPTION_LABEL = "Short description";
+ private final TextAreaValidationService textAreaValidationService;
public static final String DOCUMENT_DETAILS_CONTENT = """
You should only upload documents that are relevant to your application.
@@ -29,7 +45,7 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP
- Give your document a name that explains what it is. \s
+ Give your document a name that explains what it is.
""";
@@ -42,8 +58,8 @@ public void addTo(PageBuilder pageBuilder) {
.pageLabel("Upload your documents")
.label(pageKey + "-line-separator", "---")
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
- .complex(PCSCase::getLegalRepDocumentUpload)
- .mandatory(LegalRepDocumentUpload::getLegalRepDocuments)
+ .complex(PCSCase::getLegalRepDocumentUploadDetails)
+ .mandatory(LegalRepDocumentUploadDetails::getLegalRepDocuments)
.done()
.build();
}
@@ -52,4 +68,35 @@ public void addTo(PageBuilder pageBuilder) {
public String getPageKey() {
return CcdPage.derivePageKey(this.getClass());
}
+
+ private AboutToStartOrSubmitResponse midEvent(
+ CaseDetails caseDetails,
+ CaseDetails caseDetailsBefore) {
+
+ PCSCase caseData = caseDetails.getData();
+ LegalRepDocumentUploadDetails caseLegalRepDocs = caseData.getLegalRepDocumentUploadDetails();
+
+ List errors = validateDocumentDescription(caseLegalRepDocs.getLegalRepDocuments(), DESCRIPTION_LABEL);
+
+ return AboutToStartOrSubmitResponse.builder()
+ .errorMessageOverride(StringUtils.joinIfNotEmpty("\n", errors))
+ .data(caseData)
+ .build();
+ }
+
+ public List validateDocumentDescription(
+ List> legalRepDocuments,
+ String label) {
+
+ List validationErrorsList = new ArrayList<>();
+
+ for (int i = 0; i < legalRepDocuments.size(); i++) {
+ String documentDescription = legalRepDocuments.get(i).getValue().getDescription();
+ String fieldLabel = "Legal Representative document %d".formatted(i + 1) + "'s " + label;
+ validationErrorsList.addAll(textAreaValidationService.validateSingleTextArea(
+ documentDescription, fieldLabel, TextAreaValidationService.EXTRA_SHORT_TEXT_LIMIT)
+ );
+ }
+ return validationErrorsList;
+ }
}
diff --git a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java
index ba510606c9..bccd542b5b 100644
--- a/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java
+++ b/src/test/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/LegalRepDocumentUploadDetailsConfigurerTest.java
@@ -5,6 +5,7 @@
import org.mockito.ArgumentCaptor;
import org.mockito.InOrder;
import org.mockito.InjectMocks;
+import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
@@ -28,6 +29,9 @@ class LegalRepDocumentUploadDetailsConfigurerTest extends BasePageTest {
@InjectMocks
private LegalRepDocumentUploadConfigurer underTest;
+ @Mock
+ private UploadAdditionalDocumentsPage uploadAdditionalDocumentsPage;
+
@Test
@SuppressWarnings("squid:S5961")
void shouldConfigurePagesInCorrectOrder() {
@@ -46,7 +50,7 @@ void shouldConfigurePagesInCorrectOrder() {
verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsInformationPage.class, verificationCount);
verifyAndCount(inOrder, pageBuilder, ExistingApplicationPage.class, verificationCount);
- verifyAndCount(inOrder, pageBuilder, UploadAdditionalDocumentsPage.class, verificationCount);
+ verifyAndCount(inOrder, pageBuilder, uploadAdditionalDocumentsPage, verificationCount);
int numberOfPages = pageCaptor.getAllValues().size();
assertThat(verificationCount.get()).isEqualTo(numberOfPages);
From b26e3a6dc5c420af9771a2776c16fc669572435d Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Fri, 12 Jun 2026 16:22:14 +0100
Subject: [PATCH 08/16] Updated content for upload page
---
.../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index 001f454808..78d110574e 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -26,12 +26,12 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP
private final TextAreaValidationService textAreaValidationService;
public static final String DOCUMENT_DETAILS_CONTENT = """
- You should only upload documents that are relevant to your application.
+ You should only upload documents that are relevant to the claim.
Before you upload the document, give it a name that tells the court what it is,
- for example, ‘witness statement’, or ‘tenancy agreement’.
+ for example ‘witness statement’, or ‘tenancy agreement’.
From 1337f7547353c8b4e3ee9d9b5d47fc98c4f61937 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Wed, 17 Jun 2026 17:01:18 +0100
Subject: [PATCH 09/16] Updated title and spacing
---
.../legalrepdocumentupload/UploadAdditionalDocumentsPage.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index 78d110574e..cbbde5b764 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -40,7 +40,7 @@ public class UploadAdditionalDocumentsPage implements CcdPageConfiguration, CcdP
TIF/TIFF.
-
+
Before you upload your documents
@@ -55,7 +55,7 @@ public void addTo(PageBuilder pageBuilder) {
String pageKey = getPageKey();
pageBuilder
.page(pageKey)
- .pageLabel("Upload your documents")
+ .pageLabel("Upload additional documents")
.label(pageKey + "-line-separator", "---")
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
.complex(PCSCase::getLegalRepDocumentUploadDetails)
From 8e38ef34ade39c8313be9592f42425d9a28badf5 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 29 Jun 2026 14:36:29 +0100
Subject: [PATCH 10/16] Added LegalRepDocumentTypeWales
---
.../LegalRepDocument.java | 13 ++++++--
.../LegalRepDocumentType.java | 11 +++++--
.../wales/LegalRepDocumentTypeWales.java | 23 ++++++++++++++
.../ccd/service/document/DocumentService.java | 30 +++++++++++++++++++
4 files changed, 71 insertions(+), 6 deletions(-)
create mode 100644 src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
index 2ddc653029..2737ce7446 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocument.java
@@ -7,7 +7,7 @@
import uk.gov.hmcts.ccd.sdk.api.CCD;
import uk.gov.hmcts.ccd.sdk.type.Document;
import uk.gov.hmcts.ccd.sdk.type.FieldType;
-import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales;
@Data
@Builder
@@ -18,9 +18,16 @@ public class LegalRepDocument {
@CCD(
label = "Type of document",
typeOverride = FieldType.FixedList,
- typeParameterOverride = "EvidenceDocumentType"
+ typeParameterOverride = "LegalRepDocumentType"
)
- private EvidenceDocumentType documentType;
+ private LegalRepDocumentType legalRepDocumentType;
+
+ @CCD(
+ label = "Type of document",
+ typeOverride = FieldType.FixedList,
+ typeParameterOverride = "LegalRepDocumentTypeWales"
+ )
+ private LegalRepDocumentTypeWales legalRepDocumentTypeWales;
@CCD(label = "Document")
private Document document;
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
index a660edd45d..795e829ee2 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentType.java
@@ -8,10 +8,15 @@
@Getter
public enum LegalRepDocumentType implements HasLabel {
+ RENT_STATEMENT("Rent or payments"),
+ TENANCY_AGREEMENT("Tenancy agreement"),
+ CORRESPONDENCE_FROM_DEFENDANT("Correspondence from defendant"),
+ CORRESPONDENCE_FROM_CLAIMANT("Correspondence from claimant"),
PHOTOGRAPHIC_EVIDENCE("Photographic evidence"),
- POLICE_REPORT("Police report"),
- WITNESS_STATEMENT("Witness statement"),
- OTHER("Other document");
+ CERTIFICATE_OF_SUITABILITY_AS_LF("Certificate of suitability as litigation friend"),
+ LEGAL_AID_CERTIFICATE("Legal aid certificate"),
+ OTHER("Other document"),
+ WITNESS_STATEMENT("Witness statement");
private final String label;
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java
new file mode 100644
index 0000000000..b784d46ba7
--- /dev/null
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/wales/LegalRepDocumentTypeWales.java
@@ -0,0 +1,23 @@
+package uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import uk.gov.hmcts.ccd.sdk.api.HasLabel;
+
+@AllArgsConstructor
+@Getter
+public enum LegalRepDocumentTypeWales implements HasLabel {
+
+ RENT_STATEMENT("Rent or payments"),
+ OCCUPATION_LICENCE("Occupation licence"),
+ CORRESPONDENCE_FROM_DEFENDANT("Correspondence from defendant"),
+ CORRESPONDENCE_FROM_CLAIMANT("Correspondence from claimant"),
+ PHOTOGRAPHIC_EVIDENCE("Photographic evidence"),
+ CERTIFICATE_OF_SUITABILITY_AS_LF("Certificate of suitability as litigation friend"),
+ LEGAL_AID_CERTIFICATE("Legal aid certificate"),
+ OTHER("Other document"),
+ WITNESS_STATEMENT("Witness statement");
+
+ private final String label;
+
+}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index 20072f1f42..da0657d628 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -22,6 +22,8 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.EnforcementOrder;
import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceDocumentType;
import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceOfDefendants;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentType;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales;
import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments;
@@ -414,6 +416,34 @@ private DocumentType mapEvidenceDocumentTypeToDocumentType(EvidenceDocumentType
};
}
+ private DocumentType mapLegalRepDocumentTypeToDocumentType(LegalRepDocumentType legalRepDocumentType) {
+ return switch (legalRepDocumentType) {
+ case RENT_STATEMENT -> DocumentType.RENT_STATEMENT;
+ case TENANCY_AGREEMENT -> DocumentType.TENANCY_AGREEMENT;
+ case CORRESPONDENCE_FROM_CLAIMANT -> DocumentType.CORRESPONDENCE_FROM_CLAIMANT;
+ case CORRESPONDENCE_FROM_DEFENDANT -> DocumentType.CORRESPONDENCE_FROM_DEFENDANT;
+ case PHOTOGRAPHIC_EVIDENCE -> DocumentType.PHOTOGRAPHIC_EVIDENCE;
+ case CERTIFICATE_OF_SUITABILITY_AS_LF -> DocumentType.CERTIFICATE_OF_SUITABILITY_AS_LF;
+ case LEGAL_AID_CERTIFICATE -> DocumentType.LEGAL_AID_CERTIFICATE;
+ case OTHER -> DocumentType.OTHER;
+ case WITNESS_STATEMENT -> DocumentType.WITNESS_STATEMENT;
+ };
+ }
+
+ private DocumentType mapLegalRepDocumentTypeToDocumentType(LegalRepDocumentTypeWales legalRepDocumentTypeWales) {
+ return switch (legalRepDocumentTypeWales) {
+ case RENT_STATEMENT -> DocumentType.RENT_STATEMENT;
+ case OCCUPATION_LICENCE -> DocumentType.OCCUPATION_LICENCE;
+ case CORRESPONDENCE_FROM_CLAIMANT -> DocumentType.CORRESPONDENCE_FROM_CLAIMANT;
+ case CORRESPONDENCE_FROM_DEFENDANT -> DocumentType.CORRESPONDENCE_FROM_DEFENDANT;
+ case PHOTOGRAPHIC_EVIDENCE -> DocumentType.PHOTOGRAPHIC_EVIDENCE;
+ case CERTIFICATE_OF_SUITABILITY_AS_LF -> DocumentType.CERTIFICATE_OF_SUITABILITY_AS_LF;
+ case LEGAL_AID_CERTIFICATE -> DocumentType.LEGAL_AID_CERTIFICATE;
+ case OTHER -> DocumentType.OTHER;
+ case WITNESS_STATEMENT -> DocumentType.WITNESS_STATEMENT;
+ };
+ }
+
@Builder
@Data
private static class DocumentHolder {
From c4b1eea4b1b28b505dc5e336ce8cf41d31146f5f Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 29 Jun 2026 16:15:24 +0100
Subject: [PATCH 11/16] updated submit method and document service
---
.../LegalRepDocumentUpload.java | 31 ++++++++++++++-
.../UploadAdditionalDocumentsPage.java | 38 -------------------
.../ccd/service/document/DocumentService.java | 36 ++++++++++++++++++
3 files changed, 65 insertions(+), 40 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
index 5d0cdbd9f8..dd1e673128 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
@@ -14,11 +14,13 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
import uk.gov.hmcts.reform.pcs.ccd.domain.State;
import uk.gov.hmcts.reform.pcs.ccd.domain.VerticalYesNo;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.DocumentUploadCategory;
import uk.gov.hmcts.reform.pcs.ccd.entity.PcsCaseEntity;
import uk.gov.hmcts.reform.pcs.ccd.page.legalrepdocumentupload.LegalRepDocumentUploadConfigurer;
import uk.gov.hmcts.reform.pcs.ccd.service.PcsCaseService;
+import uk.gov.hmcts.reform.pcs.ccd.service.document.DocumentService;
import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringList;
import uk.gov.hmcts.reform.pcs.ccd.type.DynamicStringListElement;
@@ -40,6 +42,7 @@ public class LegalRepDocumentUpload implements CCDConfig configBuilder) {
@@ -131,7 +134,31 @@ GenAppType mapCategoryToGenAppType(DocumentUploadCategory category) {
};
}
- private SubmitResponse submit(EventPayload eventPayload) {
- return SubmitResponse.defaultResponse();
+ SubmitResponse submit(EventPayload eventPayload) {
+ Long caseReference = eventPayload.caseReference();
+ PcsCaseEntity pcsCaseEntity = pcsCaseService.loadCase(caseReference);
+ PCSCase pcsCase = eventPayload.caseData();
+
+ List legalRepDocuments = documentService.createLegalRepDocuments(pcsCase);
+
+ boolean isDocumentNull = legalRepDocuments.stream()
+ .anyMatch(doc -> doc == null || doc.getDocument() == null);
+
+ if (isDocumentNull) {
+ return errorResponse("Your files were not submitted. Try again.");
+ }
+
+ documentService.createDocumentEntitiesFromLegalRepDocuments(legalRepDocuments,pcsCaseEntity);
+
+ return SubmitResponse.builder()
+ .build();
+ }
+
+ @SuppressWarnings("SameParameterValue")
+ private SubmitResponse errorResponse(String message) {
+ return SubmitResponse.builder()
+ .errors(List.of(message))
+ .build();
}
+
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index cbbde5b764..0509b17339 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -2,21 +2,13 @@
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
-import uk.gov.hmcts.ccd.sdk.api.CaseDetails;
-import uk.gov.hmcts.ccd.sdk.api.callback.AboutToStartOrSubmitResponse;
-import uk.gov.hmcts.ccd.sdk.type.ListValue;
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
-import uk.gov.hmcts.reform.pcs.ccd.domain.State;
-import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails;
import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService;
-import uk.gov.hmcts.reform.pcs.ccd.util.StringUtils;
-import java.util.ArrayList;
-import java.util.List;
@Component
@AllArgsConstructor
@@ -69,34 +61,4 @@ public String getPageKey() {
return CcdPage.derivePageKey(this.getClass());
}
- private AboutToStartOrSubmitResponse midEvent(
- CaseDetails caseDetails,
- CaseDetails caseDetailsBefore) {
-
- PCSCase caseData = caseDetails.getData();
- LegalRepDocumentUploadDetails caseLegalRepDocs = caseData.getLegalRepDocumentUploadDetails();
-
- List errors = validateDocumentDescription(caseLegalRepDocs.getLegalRepDocuments(), DESCRIPTION_LABEL);
-
- return AboutToStartOrSubmitResponse.builder()
- .errorMessageOverride(StringUtils.joinIfNotEmpty("\n", errors))
- .data(caseData)
- .build();
- }
-
- public List validateDocumentDescription(
- List> legalRepDocuments,
- String label) {
-
- List validationErrorsList = new ArrayList<>();
-
- for (int i = 0; i < legalRepDocuments.size(); i++) {
- String documentDescription = legalRepDocuments.get(i).getValue().getDescription();
- String fieldLabel = "Legal Representative document %d".formatted(i + 1) + "'s " + label;
- validationErrorsList.addAll(textAreaValidationService.validateSingleTextArea(
- documentDescription, fieldLabel, TextAreaValidationService.EXTRA_SHORT_TEXT_LIMIT)
- );
- }
- return validationErrorsList;
- }
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index da0657d628..f5168dc618 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -24,6 +24,8 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.enforcetheorder.warrantofrestitution.EvidenceOfDefendants;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentType;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.wales.LegalRepDocumentTypeWales;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales;
import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments;
@@ -451,4 +453,38 @@ private static class DocumentHolder {
private DocumentType type;
private String description;
}
+
+ public List createLegalRepDocuments(PCSCase pcsCase) {
+ LegalRepDocumentUploadDetails legalRepDocumentUploadDetails = pcsCase.getLegalRepDocumentUploadDetails();
+
+ return legalRepDocumentUploadDetails.getLegalRepDocuments().stream()
+ .map(ListValue::getValue).toList();
+ }
+
+ public DocumentType resolveDocumentType(LegalRepDocument legalRepDoc) {
+ if (legalRepDoc.getLegalRepDocumentTypeWales() != null) {
+ return mapLegalRepDocumentTypeToDocumentType(legalRepDoc.getLegalRepDocumentTypeWales());
+ }
+ return mapLegalRepDocumentTypeToDocumentType(legalRepDoc.getLegalRepDocumentType());
+ }
+
+ public void createDocumentEntitiesFromLegalRepDocuments(
+ List legalRepDocuments,
+ PcsCaseEntity pcsCaseEntity
+ ) {
+ List documentEntities = legalRepDocuments.stream()
+ .map(legalRepDoc -> DocumentEntity.builder()
+ .pcsCase(pcsCaseEntity)
+ .claim(pcsCaseEntity.getClaims().getFirst())
+ .url(legalRepDoc.getDocument().getUrl())
+ .fileName(legalRepDoc.getDocument().getFilename())
+ .binaryUrl(legalRepDoc.getDocument().getBinaryUrl())
+ .categoryId(legalRepDoc.getDocument().getCategoryId())
+ .description(legalRepDoc.getDescription())
+ .type(resolveDocumentType(legalRepDoc))
+ .build())
+ .toList();
+
+ pcsCaseEntity.addDocuments(documentEntities);
+ }
}
From 15e0d1a51f727978a35732f2c1bd9d45580f05af Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Mon, 29 Jun 2026 16:22:50 +0100
Subject: [PATCH 12/16] removed duplicate import
---
.../hmcts/reform/pcs/ccd/service/document/DocumentService.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index 5e2f6396c1..2ec388d1de 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -29,7 +29,6 @@
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.OccupationLicenceDetailsWales;
import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
import uk.gov.hmcts.reform.pcs.ccd.domain.wales.WalesDocuments;
-import uk.gov.hmcts.reform.pcs.ccd.entity.ClaimEntity;
import uk.gov.hmcts.reform.pcs.ccd.entity.DocumentEntity;
import uk.gov.hmcts.reform.pcs.ccd.entity.GenAppEntity;
import uk.gov.hmcts.reform.pcs.ccd.entity.PcsCaseEntity;
From 66e96e10cbce57a541f0b090b34048a62f6836e1 Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Thu, 2 Jul 2026 09:15:03 +0100
Subject: [PATCH 13/16] Added LegalREpDocumentType for English and Welsh
journey
---
.../LegalRepDocumentUploadDetails.java | 4 ++++
.../legalrepdocumentupload/LegalRepDocumentUpload.java | 5 +++++
.../UploadAdditionalDocumentsPage.java | 9 ++++++++-
.../reform/pcs/ccd/service/document/DocumentService.java | 1 -
4 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
index 078fd96d8b..9b15da0203 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/domain/legalrepdocumentupload/LegalRepDocumentUploadDetails.java
@@ -35,7 +35,11 @@ public class LegalRepDocumentUploadDetails {
hint = "Upload a document to the system"
)
private List> legalRepDocuments;
+
@CCD(searchable = false)
private YesOrNo showExistingApplicationPage;
+ @CCD(searchable = false)
+ private YesOrNo isWales;
+
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
index dd1e673128..27d9e51db5 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/event/legalrepdocumentupload/LegalRepDocumentUpload.java
@@ -33,6 +33,7 @@
import uk.gov.hmcts.reform.pcs.ccd.entity.GenAppEntity;
import uk.gov.hmcts.reform.pcs.ccd.domain.genapp.GenAppType;
+import uk.gov.hmcts.reform.pcs.postcodecourt.model.LegislativeCountry;
import static uk.gov.hmcts.reform.pcs.ccd.event.EventId.legalRepDocumentUpload;
@@ -89,6 +90,10 @@ private PCSCase start(EventPayload eventPayload) {
// By default, Main claim is always added
caseData.getLegalRepDocumentUploadDetails().setShowExistingApplicationPage(validCategoryItems.size() >= 2
? YesOrNo.YES : YesOrNo.NO);
+
+ boolean isWalesClaim = pcsCaseEntity.getLegislativeCountry() == LegislativeCountry.WALES;
+ caseData.getLegalRepDocumentUploadDetails().setIsWales(isWalesClaim ? YesOrNo.YES : YesOrNo.NO);
+
return caseData;
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
index 0509b17339..31d5ecd7d6 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/page/legalrepdocumentupload/UploadAdditionalDocumentsPage.java
@@ -5,10 +5,12 @@
import uk.gov.hmcts.reform.pcs.ccd.common.CcdPageConfiguration;
import uk.gov.hmcts.reform.pcs.ccd.common.PageBuilder;
import uk.gov.hmcts.reform.pcs.ccd.domain.PCSCase;
+import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocument;
import uk.gov.hmcts.reform.pcs.ccd.domain.legalrepdocumentupload.LegalRepDocumentUploadDetails;
import uk.gov.hmcts.reform.pcs.ccd.page.CcdPage;
import uk.gov.hmcts.reform.pcs.ccd.service.TextAreaValidationService;
+import static uk.gov.hmcts.reform.pcs.ccd.ShowConditions.NEVER_SHOW;
@Component
@AllArgsConstructor
@@ -51,7 +53,12 @@ public void addTo(PageBuilder pageBuilder) {
.label(pageKey + "-line-separator", "---")
.label(pageKey + "-content", DOCUMENT_DETAILS_CONTENT)
.complex(PCSCase::getLegalRepDocumentUploadDetails)
- .mandatory(LegalRepDocumentUploadDetails::getLegalRepDocuments)
+ .readonly(LegalRepDocumentUploadDetails::getIsWales, NEVER_SHOW)
+ .list(LegalRepDocumentUploadDetails::getLegalRepDocuments)
+ .mandatory(LegalRepDocument::getLegalRepDocumentType, "isWales = \"No\"")
+ .mandatory(LegalRepDocument::getLegalRepDocumentTypeWales, "isWales = \"Yes\"")
+ .mandatory(LegalRepDocument::getDocument)
+ .mandatory(LegalRepDocument::getDescription)
.done()
.build();
}
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index 2ec388d1de..fc5b025107 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -474,7 +474,6 @@ public void createDocumentEntitiesFromLegalRepDocuments(
List documentEntities = legalRepDocuments.stream()
.map(legalRepDoc -> DocumentEntity.builder()
.pcsCase(pcsCaseEntity)
- .claim(pcsCaseEntity.getClaims().getFirst())
.url(legalRepDoc.getDocument().getUrl())
.fileName(legalRepDoc.getDocument().getFilename())
.binaryUrl(legalRepDoc.getDocument().getBinaryUrl())
From ce26670e5a22d0f3e308001530474d237e7b117a Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Thu, 2 Jul 2026 12:27:30 +0100
Subject: [PATCH 14/16] Updated DocumentService to ddded mapping to categoryId
for legalRepDocuments
---
.../hmcts/reform/pcs/ccd/service/document/DocumentService.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index fc5b025107..b6040cf909 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -477,9 +477,10 @@ public void createDocumentEntitiesFromLegalRepDocuments(
.url(legalRepDoc.getDocument().getUrl())
.fileName(legalRepDoc.getDocument().getFilename())
.binaryUrl(legalRepDoc.getDocument().getBinaryUrl())
- .categoryId(legalRepDoc.getDocument().getCategoryId())
.description(legalRepDoc.getDescription())
.type(resolveDocumentType(legalRepDoc))
+ .categoryId(Optional.of(mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc))
+ .map(CaseFileCategory::getId)).toString())
.build())
.toList();
From 05ab99456df7e1e40f25b39707c1105c1ca1708b Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Thu, 2 Jul 2026 12:58:05 +0100
Subject: [PATCH 15/16] Updated DocumentService by removing Optional.of for
categoryId mapping of legalRepDoc
---
.../reform/pcs/ccd/service/document/DocumentService.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index b6040cf909..9cfd6f0806 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -479,8 +479,8 @@ public void createDocumentEntitiesFromLegalRepDocuments(
.binaryUrl(legalRepDoc.getDocument().getBinaryUrl())
.description(legalRepDoc.getDescription())
.type(resolveDocumentType(legalRepDoc))
- .categoryId(Optional.of(mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc))
- .map(CaseFileCategory::getId)).toString())
+ .categoryId((mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc))
+ .map(CaseFileCategory::getId)).orElse(null))
.build())
.toList();
From 2f9927e6921a4bd18c2c403708705673fdf2fabc Mon Sep 17 00:00:00 2001
From: Nicole-Samuels
Date: Thu, 2 Jul 2026 13:46:23 +0100
Subject: [PATCH 16/16] updated DocumentService for legalRepDocument
---
.../ccd/service/document/DocumentService.java | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
index 9cfd6f0806..14f38679b9 100644
--- a/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
+++ b/src/main/java/uk/gov/hmcts/reform/pcs/ccd/service/document/DocumentService.java
@@ -472,16 +472,24 @@ public void createDocumentEntitiesFromLegalRepDocuments(
PcsCaseEntity pcsCaseEntity
) {
List documentEntities = legalRepDocuments.stream()
- .map(legalRepDoc -> DocumentEntity.builder()
+ .map(legalRepDoc -> {
+
+ DocumentType resolvedDocumentType = resolveDocumentType(legalRepDoc);
+
+ String categoryId = mapDocumentTypeToCategory(resolvedDocumentType)
+ .map(CaseFileCategory::getId)
+ .orElse(null);
+
+ return DocumentEntity.builder()
.pcsCase(pcsCaseEntity)
.url(legalRepDoc.getDocument().getUrl())
.fileName(legalRepDoc.getDocument().getFilename())
.binaryUrl(legalRepDoc.getDocument().getBinaryUrl())
.description(legalRepDoc.getDescription())
- .type(resolveDocumentType(legalRepDoc))
- .categoryId((mapDocumentTypeToCategory(resolveDocumentType(legalRepDoc))
- .map(CaseFileCategory::getId)).orElse(null))
- .build())
+ .type(resolvedDocumentType)
+ .categoryId(categoryId)
+ .build();
+ })
.toList();
pcsCaseEntity.addDocuments(documentEntities);