Repository: pagopa/p4pa-pu-bff
Pull request #118: feat: P4ADEV-2648 update create export file date filters
Author: login: pelliccm
Labels: name: released
Created: 2025-05-14T15:50:14Z | Merged: 2025-05-16T09:29:41Z

#### Description
<!--- Please always add a PR description as if nobody knows anything about the context these changes come from. -->
<!--- Even if we are all from our internal team, we may not be on the same page. -->
<!--- Write this PR as you were contributing to a public OSS project, where nobody knows you and you have to earn their trust. -->
<!--- This will improve our projects in the long run! Thanks. -->

#### List of Changes
<!--- Describe your changes in detail -->

#### Motivation and Context
<!--- Why is this change required? What problem does it solve? -->

#### How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, tests ran to see how -->
<!--- your change affects other areas of the code, etc. -->
- Pre-Deploy Test
  - [x] Unit
  - [ ] Integration (Narrow)
- Post-Deploy Test
  - [ ] Isolated Microservice
  - [ ] Broader Integration
  - [ ] Acceptance
  - [ ] Performance & Load

#### Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->

- [ ] PATCH - Bug fix (backwards compatible bug fixes)
- [x] MINOR - New feature (add functionality in a backwards compatible manner)
- [ ] MAJOR - Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] CHORE - Minor Change (fix or feature that don't impact the functionality e.g. Documentation or lint configuration)

#### Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->

- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.



Diff:
diff --git a/build.gradle.kts b/build.gradle.kts
index ca33e373..54108027 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -167,6 +167,8 @@ tasks.register<org.openapitools.generator.gradle.plugin.tasks.GenerateTask>("ope
     "ClassificationsExportFileRequestDTO" to "it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileRequestDTO",
     "PaymentsReportingExportFileRequestDTO" to "it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO",
     "ReceiptsArchivingExportFileRequestDTO" to "it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO",
+    "PaidExportFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO.ExportFileTypeEnum",
+    "ReceiptsArchivingExportFileType" to "it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO.ExportFileTypeEnum",
     "ReceiptView" to "it.gov.pagopa.pu.debtpositions.dto.generated.ReceiptView",
     "ReceiptOriginType" to "it.gov.pagopa.pu.debtpositions.dto.generated.ReceiptOriginType",
     "DebtPositionTypeOrg" to "it.gov.pagopa.pu.debtpositions.dto.generated.DebtPositionTypeOrg",
@@ -189,7 +191,8 @@ tasks.register<org.openapitools.generator.gradle.plugin.tasks.GenerateTask>("ope
     "DebtPositionTypeResponseBody" to "it.gov.pagopa.pu.debtpositions.dto.generated.DebtPositionType",
     "PagedTreasuredClassification" to "it.gov.pagopa.pu.classification.dto.generated.PagedTreasuredClassification",
     "ClassificationsEnum" to "it.gov.pagopa.pu.classification.dto.generated.ClassificationsEnum",
-    "DebtPositionOrigin" to "it.gov.pagopa.pu.debtpositions.dto.generated.DebtPositionOrigin"
+    "DebtPositionOrigin" to "it.gov.pagopa.pu.debtpositions.dto.generated.DebtPositionOrigin",
+    "LocalDateInterval" to "it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter"
   ))
   configOptions.set(mapOf(
     "dateLibrary" to "java8",
diff --git a/openapi/generated.openapi.json b/openapi/generated.openapi.json
index 5771025e..c2e369bd 100644
--- a/openapi/generated.openapi.json
+++ b/openapi/generated.openapi.json
@@ -270,7 +270,7 @@
           "content" : {
             "application/json" : {
               "schema" : {
-                "$ref" : "#/components/schemas/ReceiptsArchivingExportFileRequestDTO"
+                "$ref" : "#/components/schemas/ReceiptsArchivingExportFileRequest"
               }
             }
           },
@@ -320,7 +320,7 @@
           "content" : {
             "application/json" : {
               "schema" : {
-                "$ref" : "#/components/schemas/PaidExportFileRequestDTO"
+                "$ref" : "#/components/schemas/PaidExportFileRequest"
               }
             }
           },
@@ -4020,7 +4020,7 @@
             }
           }
         },
-        "required" : [ "code", "debtPositionTypeId", "description", "iban", "organizationId" ]
+        "required" : [ "code", "debtPositionTypeId", "description", "organizationId" ]
       },
       "Link" : {
         "type" : "object",
@@ -4085,28 +4085,20 @@
         "type" : "string",
         "enum" : [ "PAID", "CLASSIFICATIONS", "PAYMENTS_REPORTING", "RECEIPTS_ARCHIVING" ]
       },
-      "OffsetDateTimeIntervalFilter" : {
+      "LocalDateIntervalFilter" : {
         "type" : "object",
         "properties" : {
           "from" : {
             "type" : "string",
-            "format" : "date-time"
+            "format" : "date"
           },
           "to" : {
             "type" : "string",
-            "format" : "date-time"
-          }
-        }
-      },
-      "ReceiptsArchivingExportFileFilter" : {
-        "type" : "object",
-        "properties" : {
-          "paymentDateTime" : {
-            "$ref" : "#/components/schemas/OffsetDateTimeIntervalFilter"
+            "format" : "date"
           }
         }
       },
-      "ReceiptsArchivingExportFileRequestDTO" : {
+      "ReceiptsArchivingExportFileRequest" : {
         "type" : "object",
         "properties" : {
           "organizationId" : {
@@ -4120,11 +4112,19 @@
             "type" : "string"
           },
           "filterFields" : {
-            "$ref" : "#/components/schemas/ReceiptsArchivingExportFileFilter"
+            "$ref" : "#/components/schemas/ReceiptsArchivingExportFileRequestFilterFields"
           }
         },
         "required" : [ "exportFileType", "fileVersion", "filterFields", "organizationId" ]
       },
+      "ReceiptsArchivingExportFileRequestFilterFields" : {
+        "type" : "object",
+        "properties" : {
+          "paymentDate" : {
+            "$ref" : "#/components/schemas/LocalDateIntervalFilter"
+          }
+        }
+      },
       "PaymentsReportingExportFileFilter" : {
         "type" : "object",
         "properties" : {
@@ -4152,19 +4152,7 @@
         },
         "required" : [ "exportFileType", "fileVersion", "filterFields", "organizationId" ]
       },
-      "PaidExportFileFilter" : {
-        "type" : "object",
-        "properties" : {
-          "paymentDateTime" : {
-            "$ref" : "#/components/schemas/OffsetDateTimeIntervalFilter"
-          },
-          "debtPositionTypeOrgId" : {
-            "type" : "integer",
-            "format" : "int64"
-          }
-        }
-      },
-      "PaidExportFileRequestDTO" : {
+      "PaidExportFileRequest" : {
         "type" : "object",
         "properties" : {
           "organizationId" : {
@@ -4178,11 +4166,23 @@
             "type" : "string"
           },
           "filterFields" : {
-            "$ref" : "#/components/schemas/PaidExportFileFilter"
+            "$ref" : "#/components/schemas/PaidExportFileRequestFilterFields"
           }
         },
         "required" : [ "exportFileType", "fileVersion", "filterFields", "organizationId" ]
       },
+      "PaidExportFileRequestFilterFields" : {
+        "type" : "object",
+        "properties" : {
+          "paymentDate" : {
+            "$ref" : "#/components/schemas/LocalDateIntervalFilter"
+          },
+          "debtPositionTypeOrgId" : {
+            "type" : "integer",
+            "format" : "int64"
+          }
+        }
+      },
       "ClassificationsExportFileFilter" : {
         "type" : "object",
         "properties" : {
@@ -4263,19 +4263,6 @@
         "type" : "string",
         "enum" : [ "DOPPI", "RT_NO_IUF", "RT_NO_IUD", "IUV_NO_RT", "TES_NO_IUF_OR_IUV", "IUF_NO_TES", "IUD_RT_IUF", "RT_IUF", "RT_TES", "IUD_RT_IUF_TES", "RT_IUF_TES", "IUF_TES_DIV_IMP", "IUD_NO_RT", "TES_NO_MATCH", "UNKNOWN" ]
       },
-      "LocalDateIntervalFilter" : {
-        "type" : "object",
-        "properties" : {
-          "from" : {
-            "type" : "string",
-            "format" : "date"
-          },
-          "to" : {
-            "type" : "string",
-            "format" : "date"
-          }
-        }
-      },
       "DebtPositionDTO" : {
         "type" : "object",
         "properties" : {
diff --git a/openapi/p4pa-pu-bff.openapi.yaml b/openapi/p4pa-pu-bff.openapi.yaml
index 75a01b56..8074bd94 100644
--- a/openapi/p4pa-pu-bff.openapi.yaml
+++ b/openapi/p4pa-pu-bff.openapi.yaml
@@ -1432,7 +1432,7 @@ paths:
         content:
           application/json:
             schema:
-              type: 'PaidExportFileRequestDTO'
+              $ref: '#/components/schemas/PaidExportFileRequest'
         required: true
       responses:
         '201':
@@ -1477,7 +1477,7 @@ paths:
         content:
           application/json:
             schema:
-              type: 'ReceiptsArchivingExportFileRequestDTO'
+              $ref: '#/components/schemas/ReceiptsArchivingExportFileRequest'
         required: true
       responses:
         '201':
@@ -2542,3 +2542,46 @@ components:
         - ALL
         - NONE
         - SELECTED
+    PaidExportFileRequest:
+      type: object
+      required:
+        - organizationId
+        - exportFileType
+        - fileVersion
+        - filterFields
+      properties:
+        organizationId:
+          type: integer
+          format: int64
+        exportFileType:
+          type: 'PaidExportFileType'
+        fileVersion:
+          type: string
+        filterFields:
+          type: object
+          properties:
+            paymentDate:
+              type: 'LocalDateInterval'
+            debtPositionTypeOrgId:
+              type: integer
+              format: int64
+    ReceiptsArchivingExportFileRequest:
+      type: object
+      required:
+        - organizationId
+        - exportFileType
+        - fileVersion
+        - filterFields
+      properties:
+        organizationId:
+          type: integer
+          format: int64
+        exportFileType:
+          type: 'ReceiptsArchivingExportFileType'
+        fileVersion:
+          type: string
+        filterFields:
+          type: object
+          properties:
+            paymentDate:
+              type: 'LocalDateInterval'
diff --git a/src/main/java/it/gov/pagopa/pu/bff/controller/ExportFileController.java b/src/main/java/it/gov/pagopa/pu/bff/controller/ExportFileController.java
index 7742fc25..d9a91ff0 100644
--- a/src/main/java/it/gov/pagopa/pu/bff/controller/ExportFileController.java
+++ b/src/main/java/it/gov/pagopa/pu/bff/controller/ExportFileController.java
@@ -4,11 +4,14 @@
 import it.gov.pagopa.pu.bff.dto.ExportFileFiltersDTO;
 import it.gov.pagopa.pu.bff.dto.OffsetDateTimeIntervalFilter;
 import it.gov.pagopa.pu.bff.dto.generated.PagedExportFile;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
 import it.gov.pagopa.pu.bff.security.SecurityUtils;
 import it.gov.pagopa.pu.bff.service.export_flow_file.ExportFileRetrieverService;
-import it.gov.pagopa.pu.processexecutions.dto.generated.*;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFile.ExportFileTypeEnum;
-
+import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFileStatus;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO;
 import java.time.OffsetDateTime;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Pageable;
@@ -45,7 +48,7 @@ public ResponseEntity<PagedExportFile> getExportFiles(
 
   @Override
   public ResponseEntity<Void> createPaidExportFile(
-    PaidExportFileRequestDTO requestDTO) {
+    PaidExportFileRequest requestDTO) {
     log.info(
       "User requested paid export file having organizationId {}",
       requestDTO.getOrganizationId());
@@ -80,7 +83,8 @@ public ResponseEntity<Void> createPaymentsReportingExportFile(
   }
 
   @Override
-  public ResponseEntity<Void> createReceiptsArchivingExportFile(ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO) {
+  public ResponseEntity<Void> createReceiptsArchivingExportFile(
+    ReceiptsArchivingExportFileRequest receiptsArchivingExportFileRequestDTO) {
     log.info(
       "User requested receipts archiving export file having organizationId {}",
       receiptsArchivingExportFileRequestDTO.getOrganizationId());
diff --git a/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapper.java b/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapper.java
new file mode 100644
index 00000000..1d7d256a
--- /dev/null
+++ b/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapper.java
@@ -0,0 +1,30 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PaidExportFileRequestDTOMapper {
+
+  public PaidExportFileRequestDTO map2ProcessExecutionsDto(
+    PaidExportFileRequest paidExportFileRequest) {
+    PaidExportFileFilter filterFields = PaidExportFileFilter.builder()
+      .paymentDateTime(paidExportFileRequest.getFilterFields().getPaymentDate() != null ?
+        DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(paidExportFileRequest.getFilterFields().getPaymentDate())
+        : null)
+      .debtPositionTypeOrgId(paidExportFileRequest.getFilterFields().getDebtPositionTypeOrgId() != null ?
+        paidExportFileRequest.getFilterFields().getDebtPositionTypeOrgId()
+        : null)
+      .build();
+
+    return PaidExportFileRequestDTO.builder()
+      .organizationId(paidExportFileRequest.getOrganizationId())
+      .exportFileType(paidExportFileRequest.getExportFileType())
+      .fileVersion(paidExportFileRequest.getFileVersion())
+      .filterFields(filterFields).build();
+  }
+
+}
diff --git a/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapper.java b/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapper.java
new file mode 100644
index 00000000..a1146d9d
--- /dev/null
+++ b/src/main/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapper.java
@@ -0,0 +1,28 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ReceiptsArchivingExportFileRequestDTOMapper {
+
+  public ReceiptsArchivingExportFileRequestDTO map2ProcessExecutionsDto(
+    ReceiptsArchivingExportFileRequest receiptsArchivingExportFileRequest) {
+    ReceiptsArchivingExportFileFilter filterFields = ReceiptsArchivingExportFileFilter.builder()
+      .paymentDateTime(receiptsArchivingExportFileRequest.getFilterFields().getPaymentDate() != null ?
+        DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(receiptsArchivingExportFileRequest.getFilterFields().getPaymentDate())
+        : null)
+      .build();
+
+    return ReceiptsArchivingExportFileRequestDTO.builder()
+      .organizationId(receiptsArchivingExportFileRequest.getOrganizationId())
+      .exportFileType(receiptsArchivingExportFileRequest.getExportFileType())
+      .fileVersion(receiptsArchivingExportFileRequest.getFileVersion())
+      .filterFields(filterFields)
+      .build();
+  }
+
+}
diff --git a/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverService.java b/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverService.java
index 55be82a3..10d34d6a 100644
--- a/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverService.java
+++ b/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverService.java
@@ -3,20 +3,21 @@
 import it.gov.pagopa.pu.auth.dto.generated.UserInfo;
 import it.gov.pagopa.pu.bff.dto.ExportFileFiltersDTO;
 import it.gov.pagopa.pu.bff.dto.generated.PagedExportFile;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
 import org.springframework.data.domain.Pageable;
 
 public interface ExportFileRetrieverService {
 
   PagedExportFile getExportFiles(ExportFileFiltersDTO exportFileFiltersDTO, Pageable pageable, UserInfo loggedUser, String accessToken);
 
-  void createPaidExportFile(PaidExportFileRequestDTO requestDTO, UserInfo user, String accessToken);
+  void createPaidExportFile(PaidExportFileRequest requestDTO, UserInfo user, String accessToken);
   void createClassificationsExportFile(
     ClassificationsExportFileRequestDTO requestDTO, UserInfo user, String accessToken);
   void createPaymentsReportingExportFile(
     PaymentsReportingExportFileRequestDTO requestDTO, UserInfo user, String accessToken);
-  void createReceiptsArchivingExportFile(ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO, UserInfo user, String accessToken);
+  void createReceiptsArchivingExportFile(
+    ReceiptsArchivingExportFileRequest receiptsArchivingExportFileRequestDTO, UserInfo user, String accessToken);
 }
diff --git a/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImpl.java b/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImpl.java
index 5d3eab94..52f12e2f 100644
--- a/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImpl.java
+++ b/src/main/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImpl.java
@@ -4,12 +4,14 @@
 import it.gov.pagopa.pu.bff.connector.process_executions.ExportFileService;
 import it.gov.pagopa.pu.bff.dto.ExportFileFiltersDTO;
 import it.gov.pagopa.pu.bff.dto.generated.PagedExportFile;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
 import it.gov.pagopa.pu.bff.mapper.ExportFileMapper;
+import it.gov.pagopa.pu.bff.mapper.export_file.PaidExportFileRequestDTOMapper;
+import it.gov.pagopa.pu.bff.mapper.export_file.ReceiptsArchivingExportFileRequestDTOMapper;
 import it.gov.pagopa.pu.bff.service.AuthorizationService;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
@@ -21,12 +23,18 @@ public class ExportFileRetrieverServiceImpl implements
 
   private final ExportFileService exportFileService;
   private final ExportFileMapper exportFileMapper;
+  private final PaidExportFileRequestDTOMapper paidExportFileRequestDTOMapper;
+  private final ReceiptsArchivingExportFileRequestDTOMapper receiptsArchivingExportFileRequestDTOMapper;
 
   public ExportFileRetrieverServiceImpl(
     ExportFileService exportFileService,
-    ExportFileMapper exportFileMapper) {
+    ExportFileMapper exportFileMapper,
+    PaidExportFileRequestDTOMapper paidExportFileRequestDTOMapper,
+    ReceiptsArchivingExportFileRequestDTOMapper receiptsArchivingExportFileRequestDTOMapper) {
     this.exportFileService = exportFileService;
     this.exportFileMapper = exportFileMapper;
+    this.paidExportFileRequestDTOMapper = paidExportFileRequestDTOMapper;
+    this.receiptsArchivingExportFileRequestDTOMapper = receiptsArchivingExportFileRequestDTOMapper;
   }
 
   @Override
@@ -46,9 +54,12 @@ public PagedExportFile getExportFiles(
   }
 
   @Override
-  public void createPaidExportFile(PaidExportFileRequestDTO requestDTO, UserInfo loggedUser, String accessToken) {
+  public void createPaidExportFile(PaidExportFileRequest requestDTO,
+    UserInfo loggedUser, String accessToken) {
     AuthorizationService.validateUserForOrganizationId(requestDTO.getOrganizationId(), loggedUser);
-    exportFileService.createPaidExportFile(requestDTO, accessToken);
+    exportFileService.createPaidExportFile(
+      paidExportFileRequestDTOMapper.map2ProcessExecutionsDto(requestDTO),
+      accessToken);
   }
 
   @Override
@@ -66,8 +77,12 @@ public void createPaymentsReportingExportFile(PaymentsReportingExportFileRequest
   }
 
   @Override
-  public void createReceiptsArchivingExportFile(ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO, UserInfo loggedUser, String accessToken) {
-    AuthorizationService.validateUserForOrganizationId(receiptsArchivingExportFileRequestDTO.getOrganizationId(),loggedUser);
-    exportFileService.createReceiptsArchivingExportFile(receiptsArchivingExportFileRequestDTO,accessToken);
+  public void createReceiptsArchivingExportFile(
+    ReceiptsArchivingExportFileRequest requestDTO,
+    UserInfo loggedUser, String accessToken) {
+    AuthorizationService.validateUserForOrganizationId(requestDTO.getOrganizationId(), loggedUser);
+    exportFileService.createReceiptsArchivingExportFile(
+      receiptsArchivingExportFileRequestDTOMapper.map2ProcessExecutionsDto(requestDTO),
+      accessToken);
   }
 }
diff --git a/src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java b/src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java
index b81a3c7a..1818dbee 100644
--- a/src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java
+++ b/src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java
@@ -1,8 +1,13 @@
 package it.gov.pagopa.pu.bff.util;
 
+import static it.gov.pagopa.pu.bff.util.Constants.ZONEID;
+
 import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
 
+import it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.OffsetDateTime;
 import java.time.ZoneId;
 
@@ -19,4 +24,27 @@ public static void validateDateFilters(LocalDateIntervalFilter dateFilter, Strin
       throw new IllegalArgumentException("Both " + filterName + "From and " + filterName + "To must be set or both must be null");
     }
   }
+
+  public static OffsetDateTime toOffsetDateTimeStartOfTheDay(LocalDate localDate) {
+    if (localDate == null) {
+      return null;
+    }
+    return localDate.atStartOfDay(ZONEID).toOffsetDateTime();
+  }
+
+  public static OffsetDateTime toOffsetDateTimeEndOfTheDay(LocalDate localDate) {
+    if (localDate == null) {
+      return null;
+    }
+    LocalDateTime endOfDay = LocalDateTime.of(localDate, LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS));
+    return endOfDay.atZone(ZONEID).toOffsetDateTime();
+  }
+
+  public static OffsetDateTimeIntervalFilter toRangeClosedOffsetDateTimeIntervalFilter(
+    LocalDateIntervalFilter localDateIntervalFilter) {
+    return OffsetDateTimeIntervalFilter.builder()
+      .from(toOffsetDateTimeStartOfTheDay(localDateIntervalFilter.getFrom()))
+      .to(toOffsetDateTimeEndOfTheDay(localDateIntervalFilter.getTo()))
+      .build();
+  }
 }
diff --git a/src/test/java/it/gov/pagopa/pu/bff/controller/ExportFileControllerTest.java b/src/test/java/it/gov/pagopa/pu/bff/controller/ExportFileControllerTest.java
index de352dfb..8d035d00 100644
--- a/src/test/java/it/gov/pagopa/pu/bff/controller/ExportFileControllerTest.java
+++ b/src/test/java/it/gov/pagopa/pu/bff/controller/ExportFileControllerTest.java
@@ -5,6 +5,10 @@
 import it.gov.pagopa.pu.bff.dto.OffsetDateTimeIntervalFilter;
 import it.gov.pagopa.pu.bff.dto.generated.ExportFile;
 import it.gov.pagopa.pu.bff.dto.generated.PagedExportFile;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequestFilterFields;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequestFilterFields;
 import it.gov.pagopa.pu.bff.security.SecurityUtilsTest;
 import it.gov.pagopa.pu.bff.service.export_flow_file.ExportFileRetrieverService;
 import it.gov.pagopa.pu.bff.util.TestUtils;
@@ -12,11 +16,9 @@
 import it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFile.ExportFileTypeEnum;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFileStatus;
-import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
 import java.time.OffsetDateTime;
 import java.util.List;
@@ -104,13 +106,11 @@ organizationId, exportFileType, new OffsetDateTimeIntervalFilter(creationDateFro
 
   @Test
   void givenCorrectRequestWhenCreatePaidExportFileThenOk() {
-    PaidExportFileRequestDTO requestDTO = PaidExportFileRequestDTO.builder()
+    PaidExportFileRequest requestDTO = PaidExportFileRequest.builder()
       .organizationId(1L)
-      .exportFileType(
-        it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO.ExportFileTypeEnum.PAID)
+      .exportFileType(PaidExportFileRequestDTO.ExportFileTypeEnum.PAID)
       .fileVersion("version1")
-      .filterFields(PaidExportFileFilter.builder()
-        .build())
+      .filterFields(new PaidExportFileRequestFilterFields())
       .build();
 
     ResponseEntity<Void> response = exportFileController.createPaidExportFile(requestDTO);
@@ -158,22 +158,18 @@ void givenCorrectRequestWhenCreatePaymentsReportingExportFileThenOk() {
 
   @Test
   void givenCorrectRequestWhenCreateArchivingExportFileThenOk() {
-    OffsetDateTime date = OffsetDateTime.now();
-    it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter offsetDateTimeIntervalFilter = it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter.builder().from(date).to(date).build();
-    ReceiptsArchivingExportFileFilter receiptsArchivingExportFileFilter = ReceiptsArchivingExportFileFilter.builder().paymentDateTime(offsetDateTimeIntervalFilter).build();
-
-    ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO = ReceiptsArchivingExportFileRequestDTO.builder()
+    ReceiptsArchivingExportFileRequest requestDTO = ReceiptsArchivingExportFileRequest.builder()
       .organizationId(1L)
       .exportFileType(ReceiptsArchivingExportFileRequestDTO.ExportFileTypeEnum.RECEIPTS_ARCHIVING)
       .fileVersion("V1_0")
-      .filterFields(receiptsArchivingExportFileFilter)
+      .filterFields(new ReceiptsArchivingExportFileRequestFilterFields())
       .build();
 
-    ResponseEntity<Void> response = exportFileController.createReceiptsArchivingExportFile(receiptsArchivingExportFileRequestDTO);
+    ResponseEntity<Void> response = exportFileController.createReceiptsArchivingExportFile(requestDTO);
 
     Assertions.assertEquals(HttpStatus.OK, response.getStatusCode());
     Mockito.verify(exportFileRetrieverServiceMock)
-      .createReceiptsArchivingExportFile(Mockito.eq(receiptsArchivingExportFileRequestDTO), Mockito.same(loggedUser), Mockito.same(accessToken));
+      .createReceiptsArchivingExportFile(Mockito.eq(requestDTO), Mockito.same(loggedUser), Mockito.same(accessToken));
   }
 
 }
diff --git a/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapperTest.java b/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapperTest.java
new file mode 100644
index 00000000..634233c9
--- /dev/null
+++ b/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapperTest.java
@@ -0,0 +1,47 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.bff.util.TestUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import uk.co.jemos.podam.api.PodamFactory;
+
+@ExtendWith(MockitoExtension.class)
+class PaidExportFileRequestDTOMapperTest {
+
+  private final PodamFactory podamFactory = TestUtils.getPodamFactory();
+
+  private PaidExportFileRequestDTOMapper mapper;
+
+  @BeforeEach
+  void setup() {
+    mapper = new PaidExportFileRequestDTOMapper();
+  }
+
+  @Test
+  void givenCorrectRequestDTOWhenMap2ProcessExecutionsDTOThenCorrectMapping() {
+    PaidExportFileRequest request = podamFactory.manufacturePojo(PaidExportFileRequest.class);
+    PaidExportFileFilter expectedFilterFields = PaidExportFileFilter.builder()
+      .paymentDateTime(DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(request.getFilterFields().getPaymentDate()))
+      .debtPositionTypeOrgId(request.getFilterFields().getDebtPositionTypeOrgId())
+      .build();
+    PaidExportFileRequestDTO expected = PaidExportFileRequestDTO.builder()
+      .organizationId(request.getOrganizationId())
+      .exportFileType(request.getExportFileType())
+      .fileVersion(request.getFileVersion())
+      .filterFields(expectedFilterFields)
+      .build();
+
+    PaidExportFileRequestDTO result = mapper.map2ProcessExecutionsDto(request);
+
+    TestUtils.checkNotNullFields(result);
+    assertEquals(expected, result);
+  }
+}
diff --git a/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapperTest.java b/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapperTest.java
new file mode 100644
index 00000000..09b95cb8
--- /dev/null
+++ b/src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapperTest.java
@@ -0,0 +1,46 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.bff.util.TestUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import uk.co.jemos.podam.api.PodamFactory;
+
+@ExtendWith(MockitoExtension.class)
+class ReceiptsArchivingExportFileRequestDTOMapperTest {
+
+  private final PodamFactory podamFactory = TestUtils.getPodamFactory();
+
+  private ReceiptsArchivingExportFileRequestDTOMapper mapper;
+
+  @BeforeEach
+  void setup() {
+    mapper = new ReceiptsArchivingExportFileRequestDTOMapper();
+  }
+
+  @Test
+  void givenCorrectRequestDTOWhenMap2ProcessExecutionsDTOThenCorrectMapping() {
+    ReceiptsArchivingExportFileRequest request = podamFactory.manufacturePojo(ReceiptsArchivingExportFileRequest.class);
+    ReceiptsArchivingExportFileFilter expectedFilterFields = ReceiptsArchivingExportFileFilter.builder()
+      .paymentDateTime(DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(request.getFilterFields().getPaymentDate()))
+      .build();
+    ReceiptsArchivingExportFileRequestDTO expected = ReceiptsArchivingExportFileRequestDTO.builder()
+      .organizationId(request.getOrganizationId())
+      .exportFileType(request.getExportFileType())
+      .fileVersion(request.getFileVersion())
+      .filterFields(expectedFilterFields)
+      .build();
+
+    ReceiptsArchivingExportFileRequestDTO result = mapper.map2ProcessExecutionsDto(request);
+
+    TestUtils.checkNotNullFields(result);
+    assertEquals(expected, result);
+  }
+}
diff --git a/src/test/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImplTest.java b/src/test/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImplTest.java
index 5aa04dcb..b5475e47 100644
--- a/src/test/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImplTest.java
+++ b/src/test/java/it/gov/pagopa/pu/bff/service/export_flow_file/ExportFileRetrieverServiceImplTest.java
@@ -6,7 +6,13 @@
 import it.gov.pagopa.pu.bff.dto.ExportFileFiltersDTO;
 import it.gov.pagopa.pu.bff.dto.OffsetDateTimeIntervalFilter;
 import it.gov.pagopa.pu.bff.dto.generated.PagedExportFile;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequestFilterFields;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequestFilterFields;
 import it.gov.pagopa.pu.bff.mapper.ExportFileMapper;
+import it.gov.pagopa.pu.bff.mapper.export_file.PaidExportFileRequestDTOMapper;
+import it.gov.pagopa.pu.bff.mapper.export_file.ReceiptsArchivingExportFileRequestDTOMapper;
 import it.gov.pagopa.pu.bff.service.AuthorizationService;
 import it.gov.pagopa.pu.bff.util.TestUtils;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ClassificationsExportFileFilter;
@@ -14,11 +20,9 @@
 import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFile.ExportFileTypeEnum;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ExportFileStatus;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PagedModelExportFile;
-import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.PaymentsReportingExportFileRequestDTO;
-import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
 import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
 import java.time.OffsetDateTime;
 import java.util.List;
@@ -38,12 +42,18 @@ class ExportFileRetrieverServiceImplTest {
   @Mock
   private ExportFileMapper exportFileMapperMock;
 
+  private final PaidExportFileRequestDTOMapper paidExportFileRequestDTOMapper = new PaidExportFileRequestDTOMapper();
+  private final ReceiptsArchivingExportFileRequestDTOMapper receiptsArchivingExportFileRequestDTOMapper = new ReceiptsArchivingExportFileRequestDTOMapper();
+
   private ExportFileRetrieverService exportFileRetrieverService;
 
   @BeforeEach
   void setUp() {
     exportFileRetrieverService = new ExportFileRetrieverServiceImpl(
-      exportFileServiceMock, exportFileMapperMock);
+      exportFileServiceMock,
+      exportFileMapperMock,
+      paidExportFileRequestDTOMapper,
+      receiptsArchivingExportFileRequestDTOMapper);
   }
 
   @Test
@@ -123,12 +133,11 @@ organizationId, exportFileType, new OffsetDateTimeIntervalFilter(creationDateFro
 
   @Test
   void whenCreatePaidExportFileThenOk() {
-    PaidExportFileRequestDTO requestDTO = PaidExportFileRequestDTO.builder()
+    PaidExportFileRequest requestDTO = PaidExportFileRequest.builder()
       .organizationId(1L)
-      .exportFileType(PaidExportFileRequestDTO.ExportFileTypeEnum.CLASSIFICATIONS)
+      .exportFileType(PaidExportFileRequestDTO.ExportFileTypeEnum.PAID)
       .fileVersion("version1")
-      .filterFields(PaidExportFileFilter.builder()
-        .build())
+      .filterFields(new PaidExportFileRequestFilterFields())
       .build();
     String accessToken = "ACCESSTOKEN";
     UserInfo user = TestUtils.getSampleUser();
@@ -140,7 +149,7 @@ void whenCreatePaidExportFileThenOk() {
 
     exportFileRetrieverService.createPaidExportFile(requestDTO, user, accessToken);
 
-    Mockito.verify(exportFileServiceMock).createPaidExportFile(requestDTO, accessToken);
+    Mockito.verify(exportFileServiceMock).createPaidExportFile(paidExportFileRequestDTOMapper.map2ProcessExecutionsDto(requestDTO), accessToken);
   }
 
   @Test
@@ -189,15 +198,11 @@ void whenCreatePaymentsReportingExportFileThenOk() {
 
   @Test
   void whenCreateReceiptsArchivingExportFileThenOk() {
-    OffsetDateTime date = OffsetDateTime.now();
-    it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter offsetDateTimeIntervalFilter = it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter.builder().from(date).to(date).build();
-    ReceiptsArchivingExportFileFilter receiptsArchivingExportFileFilter = ReceiptsArchivingExportFileFilter.builder().paymentDateTime(offsetDateTimeIntervalFilter).build();
-
-    ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO = it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO.builder()
+    ReceiptsArchivingExportFileRequest requestDTO = ReceiptsArchivingExportFileRequest.builder()
       .organizationId(1L)
       .exportFileType(ReceiptsArchivingExportFileRequestDTO.ExportFileTypeEnum.RECEIPTS_ARCHIVING)
       .fileVersion("V1_0")
-      .filterFields(receiptsArchivingExportFileFilter)
+      .filterFields(new ReceiptsArchivingExportFileRequestFilterFields())
       .build();
 
     String accessToken = "ACCESSTOKEN";
@@ -208,8 +213,11 @@ void whenCreateReceiptsArchivingExportFileThenOk() {
     userOrgRole.setOrganizationId(1L);
     user.setOrganizations(List.of(userOrgRole));
 
-    exportFileRetrieverService.createReceiptsArchivingExportFile(receiptsArchivingExportFileRequestDTO, user, accessToken);
+    exportFileRetrieverService.createReceiptsArchivingExportFile(
+      requestDTO, user, accessToken);
 
-    Mockito.verify(exportFileServiceMock).createReceiptsArchivingExportFile(receiptsArchivingExportFileRequestDTO, accessToken);
+    Mockito.verify(exportFileServiceMock).createReceiptsArchivingExportFile(
+      receiptsArchivingExportFileRequestDTOMapper.map2ProcessExecutionsDto(
+        requestDTO), accessToken);
   }
 }
diff --git a/src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java b/src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java
index 99cf535d..bb851b78 100644
--- a/src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java
+++ b/src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java
@@ -1,17 +1,23 @@
 package it.gov.pagopa.pu.bff.util;
 
-import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
+import it.gov.pagopa.pu.bff.dto.OffsetDateTimeIntervalFilter;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.OffsetDateTime;
 import java.time.ZoneOffset;
 import java.util.TimeZone;
-
-import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 class DateUtilsTest {
   @BeforeEach
@@ -83,4 +89,54 @@ void whenOnlyToDateIsSetThenThrowException() {
 
     assertTrue(actualMessage.contains(expectedMessage));
   }
+
+  @Test
+  void testToOffsetDateTimeEndOfTheDay() {
+    OffsetDateTime expected = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeEndOfTheDay(
+      LocalDate.now());
+
+    assertTrue(expected.isEqual(result));
+  }
+
+  @Test
+  void testToOffsetDateTimeStartOfTheDay() {
+    OffsetDateTime expected = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeStartOfTheDay(
+      LocalDate.now());
+
+    assertTrue(expected.isEqual(result));
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeEndOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeEndOfTheDay(null));
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeStartOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeStartOfTheDay(null));
+  }
+
+  @Test
+  void testToRangeClosedOffsetDateTimeIntervalFilter() {
+    OffsetDateTime from = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+    OffsetDateTime to = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTimeIntervalFilter expected = new OffsetDateTimeIntervalFilter(from, to);
+
+    it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter result = DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(
+      new LocalDateIntervalFilter(LocalDate.now(), LocalDate.now()));
+
+    assertNotNull(result);
+    assertEquals(expected.getFrom(), result.getFrom());
+    assertEquals(expected.getTo(), result.getTo());
+  }
+
 }


Reviews:
user: login: antonioT90
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-14T16:21:43Z
user: login: antonioT90
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T12:49:32Z
user: login: antonioT90
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T12:51:48Z
user: login: antonioT90
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T15:38:06Z
user: login: antonioT90
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-15T15:38:59Z
user: login: antonioT90
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-16T09:29:17Z

Review comments:
diff_hunk: @@ -0,0 +1,61 @@
+package it.gov.pagopa.pu.bff.mapper;
+
+import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequestDTO;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequestDTO;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ExportFileRequestDTOMapper {
+
+  public it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO map2ProcessExecutionsDto(
+    PaidExportFileRequestDTO paidExportFileRequestDTO) {
+    PaidExportFileFilter filterFields = PaidExportFileFilter.builder()
+      .paymentDateTime(getOffsetDateTimeIntervalFilter(
+        paidExportFileRequestDTO.getPaymentDate()))
+      .debtPositionTypeOrgId(
+        paidExportFileRequestDTO.getDebtPositionTypeOrgId())
+      .build();
+
+    return it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO.builder()
+      .organizationId(paidExportFileRequestDTO.getOrganizationId())
+      .exportFileType(
+        it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO.ExportFileTypeEnum.valueOf(
+          paidExportFileRequestDTO.getExportFileType().name()))
+      .fileVersion(paidExportFileRequestDTO.getFileVersion())
+      .filterFields(filterFields)
+      .build();
+  }
+
+  public it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO map2ProcessExecutionsDto(
+    ReceiptsArchivingExportFileRequestDTO receiptsArchivingExportFileRequestDTO) {
+    ReceiptsArchivingExportFileFilter filterFields = ReceiptsArchivingExportFileFilter.builder()
+      .paymentDateTime(getOffsetDateTimeIntervalFilter(
+        receiptsArchivingExportFileRequestDTO.getPaymentDate()))
+      .build();
+
+    return it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO.builder()
+      .organizationId(receiptsArchivingExportFileRequestDTO.getOrganizationId())
+      .exportFileType(
+        it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO.ExportFileTypeEnum.valueOf(
+          receiptsArchivingExportFileRequestDTO.getExportFileType().name()))
+      .fileVersion(receiptsArchivingExportFileRequestDTO.getFileVersion())
+      .filterFields(filterFields)
+      .build();
+  }
+
+  private OffsetDateTimeIntervalFilter getOffsetDateTimeIntervalFilter(
+    LocalDateIntervalFilter localDateIntervalFilter) {
+    return OffsetDateTimeIntervalFilter.builder()
+      .from(DateUtils.toOffsetDateTimeStartOfTheDay(
+        localDateIntervalFilter.getFrom()))
+      .to(DateUtils.toOffsetDateTimeEndOfTheDay(
+        localDateIntervalFilter.getTo()))
+      .build();
+  }
path: src/main/java/it/gov/pagopa/pu/bff/mapper/ExportFileRequestDTOMapper.java
user: login: antonioT90
body: move into an utility class in order to re-use when necessary
```suggestion
  private OffsetDateTimeIntervalFilter toRangeClosedOffsetDateTimeIntervalFilter(
    LocalDateIntervalFilter localDateIntervalFilter) {
    return OffsetDateTimeIntervalFilter.builder()
      .from(DateUtils.toOffsetDateTimeStartOfTheDay(
        localDateIntervalFilter.getFrom()))
      .to(DateUtils.toOffsetDateTimeEndOfTheDay(
        localDateIntervalFilter.getTo()))
      .build();
  }
```
created_at: 2025-05-14T15:59:37Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,13 +2,17 @@
 
 import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.OffsetDateTime;
 import java.time.ZoneId;
 
 public class DateUtils {
   private DateUtils(){}
 
+  public static final ZoneId ZONEID = ZoneId.of("Europe/Rome");
path: src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java
user: login: antonioT90
body: this is already defined in it.gov.pagopa.pu.bff.util.Constants#ZONEID
created_at: 2025-05-14T16:02:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -19,4 +23,19 @@ public static void validateDateFilters(LocalDateIntervalFilter dateFilter, Strin
       throw new IllegalArgumentException("Both " + filterName + "From and " + filterName + "To must be set or both must be null");
     }
   }
+
+  public static OffsetDateTime toOffsetDateTimeStartOfTheDay(LocalDate localDate) {
+    if (localDate == null) {
+      return null;
+    }
+    return localDate.atStartOfDay(ZONEID).toOffsetDateTime();
+  }
+
+  public static OffsetDateTime toOffsetDateTimeEndOfTheDay(LocalDate localDate) {
path: src/main/java/it/gov/pagopa/pu/bff/util/DateUtils.java
user: login: antonioT90
body: let's add tests for these methods
created_at: 2025-05-14T16:03:25Z
author_association: CONTRIBUTOR
path: src/main/java/it/gov/pagopa/pu/bff/mapper/ExportFileRequestDTOMapper.java
user: login: antonioT90
body: let's write a test for these methods
created_at: 2025-05-14T16:05:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2542,3 +2542,41 @@ components:
         - ALL
         - NONE
         - SELECTED
+    PaidExportFileRequestDTO:
+      type: object
+      required:
+        - organizationId
+        - exportFileType
+        - fileVersion
+        - paymentDate
+        - debtPositionTypeOrgId
+      properties:
+        organizationId:
+          type: integer
+          format: int64
+        exportFileType:
+          type: 'ExportFileType'
+        fileVersion:
+          type: string
+        paymentDate:
+          type: 'LocalDateInterval'
+        debtPositionTypeOrgId:
+          type: integer
+          format: int64
+    ReceiptsArchivingExportFileRequestDTO:
path: openapi/p4pa-pu-bff.openapi.yaml
user: login: antonioT90
body: This structure is misaligned with BE model, is this wanted?
BE group filter fields in a nested object, while here you are flattening this structure.
There is a reason for this?

Classification Export will have many fields... this could be have some negative effect on read the common structure...
created_at: 2025-05-14T16:18:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2542,3 +2542,41 @@ components:
         - ALL
         - NONE
         - SELECTED
+    PaidExportFileRequestDTO:
+      type: object
+      required:
+        - organizationId
+        - exportFileType
+        - fileVersion
+        - paymentDate
+        - debtPositionTypeOrgId
path: openapi/p4pa-pu-bff.openapi.yaml
user: login: antonioT90
body: are really all these fields required?
created_at: 2025-05-14T16:18:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,61 @@
+package it.gov.pagopa.pu.bff.mapper;
+
+import it.gov.pagopa.pu.bff.dto.LocalDateIntervalFilter;
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequestDTO;
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequestDTO;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ExportFileRequestDTOMapper {
path: src/main/java/it/gov/pagopa/pu/bff/mapper/ExportFileRequestDTOMapper.java
user: login: antonioT90
body: I would not create a single mapper... ClassificationExport will have many fields, this class could become very large...
let's create instead a common package where to implement all exportFile related mappers
created_at: 2025-05-14T16:20:50Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1477,7 +1477,7 @@ paths:
         content:
           application/json:
             schema:
-              type: 'ReceiptsArchivingExportFileRequestDTO'
+              $ref: 'ReceiptsArchivingExportFileRequestDTO'
path: openapi/p4pa-pu-bff.openapi.yaml
user: login: antonioT90
body: is this change right? a $ref should refer to an existent schema on this openApi...
created_at: 2025-05-15T12:42:53Z
author_association: CONTRIBUTOR
diff_hunk: @@ -83,4 +89,63 @@ void whenOnlyToDateIsSetThenThrowException() {
 
     assertTrue(actualMessage.contains(expectedMessage));
   }
+
+  @Test
+  void testToOffsetDateTimeEndOfTheDay() {
+    OffsetDateTime expected = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeEndOfTheDay(
+      LocalDate.now());
+
+    assertConversion(expected, result);
+  }
+
+  @Test
+  void testToOffsetDateTimeStartOfTheDay() {
+    OffsetDateTime expected = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeStartOfTheDay(
+      LocalDate.now());
+
+    assertConversion(expected, result);
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeEndOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeStartOfTheDay(null));
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeStartOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeStartOfTheDay(null));
+  }
+
+  @Test
+  void testToRangeClosedOffsetDateTimeIntervalFilter() {
+    OffsetDateTime from = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+    OffsetDateTime to = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTimeIntervalFilter expected = new OffsetDateTimeIntervalFilter(from, to);
+
+    it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter result = DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(
+      new LocalDateIntervalFilter(LocalDate.now(), LocalDate.now()));
+
+    assertNotNull(result);
+    assertEquals(expected.getFrom(), result.getFrom());
+    assertEquals(expected.getTo(), result.getTo());
+  }
+
+  private static void assertConversion(OffsetDateTime expected, OffsetDateTime result) {
+    assertNotNull(result);
+    assertEquals(expected.getYear(), result.getYear());
+    assertEquals(expected.getMonthValue(), result.getMonthValue());
+    assertEquals(expected.getDayOfMonth(), result.getDayOfMonth());
+    assertEquals(expected.getHour(), result.getHour());
+    assertEquals(expected.getMinute(), result.getMinute());
+    assertEquals(expected.getSecond(), result.getSecond());
+  }
path: src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java
user: login: antonioT90
body: Just use Assertions.assertTrue(expected.isEqual(result)), you don't even need to create a method to do that...
created_at: 2025-05-15T12:47:52Z
author_association: CONTRIBUTOR
path: src/main/java/it/gov/pagopa/pu/bff/mapper/ExportFileRequestDTOMapper.java
user: login: antonioT90
body: why has this mapper be rollbacked? how are you handling the conversion between LocalDateInterval and OffsetDateTimeInterval?
created_at: 2025-05-15T12:51:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,46 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import it.gov.pagopa.pu.bff.dto.generated.PaidExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.bff.util.TestUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.PaidExportFileRequestDTO;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import uk.co.jemos.podam.api.PodamFactory;
+
+@ExtendWith(MockitoExtension.class)
+class PaidExportFileRequestDTOMapperTest {
+
+  private final PodamFactory podamFactory = TestUtils.getPodamFactory();
+
+  private PaidExportFileRequestDTOMapper mapper;
+
+  @BeforeEach
+  void setup() {
+    mapper = new PaidExportFileRequestDTOMapper();
+  }
+
+  @Test
+  void givenCorrectRequestDTOWhenMap2ProcessExecutionsDTOThenCorrectMapping() {
+    PaidExportFileRequest request = podamFactory.manufacturePojo(PaidExportFileRequest.class);
+    PaidExportFileFilter expectedFilterFields = PaidExportFileFilter.builder()
+      .paymentDateTime(DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(request.getFilterFields().getPaymentDate()))
+      .debtPositionTypeOrgId(request.getFilterFields().getDebtPositionTypeOrgId())
+      .build();
+    PaidExportFileRequestDTO expected = PaidExportFileRequestDTO.builder()
+      .organizationId(request.getOrganizationId())
+      .exportFileType(request.getExportFileType())
+      .fileVersion(request.getFileVersion())
+      .filterFields(expectedFilterFields)
+      .build();
+
+    PaidExportFileRequestDTO result = mapper.map2ProcessExecutionsDto(request);
+
+    assertEquals(expected, result);
path: src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/PaidExportFileRequestDTOMapperTest.java
user: login: antonioT90
body: always call TestUtils.checkNotNullFields on mapper tests
created_at: 2025-05-15T15:37:53Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,45 @@
+package it.gov.pagopa.pu.bff.mapper.export_file;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import it.gov.pagopa.pu.bff.dto.generated.ReceiptsArchivingExportFileRequest;
+import it.gov.pagopa.pu.bff.util.DateUtils;
+import it.gov.pagopa.pu.bff.util.TestUtils;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileFilter;
+import it.gov.pagopa.pu.processexecutions.dto.generated.ReceiptsArchivingExportFileRequestDTO;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.junit.jupiter.MockitoExtension;
+import uk.co.jemos.podam.api.PodamFactory;
+
+@ExtendWith(MockitoExtension.class)
+class ReceiptsArchivingExportFileRequestDTOMapperTest {
+
+  private final PodamFactory podamFactory = TestUtils.getPodamFactory();
+
+  private ReceiptsArchivingExportFileRequestDTOMapper mapper;
+
+  @BeforeEach
+  void setup() {
+    mapper = new ReceiptsArchivingExportFileRequestDTOMapper();
+  }
+
+  @Test
+  void givenCorrectRequestDTOWhenMap2ProcessExecutionsDTOThenCorrectMapping() {
+    ReceiptsArchivingExportFileRequest request = podamFactory.manufacturePojo(ReceiptsArchivingExportFileRequest.class);
+    ReceiptsArchivingExportFileFilter expectedFilterFields = ReceiptsArchivingExportFileFilter.builder()
+      .paymentDateTime(DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(request.getFilterFields().getPaymentDate()))
+      .build();
+    ReceiptsArchivingExportFileRequestDTO expected = ReceiptsArchivingExportFileRequestDTO.builder()
+      .organizationId(request.getOrganizationId())
+      .exportFileType(request.getExportFileType())
+      .fileVersion(request.getFileVersion())
+      .filterFields(expectedFilterFields)
+      .build();
+
+    ReceiptsArchivingExportFileRequestDTO result = mapper.map2ProcessExecutionsDto(request);
+
+    assertEquals(expected, result);
path: src/test/java/it/gov/pagopa/pu/bff/mapper/export_file/ReceiptsArchivingExportFileRequestDTOMapperTest.java
user: login: antonioT90
body: always call TestUtils.checkNotNullFields on mapper tests
created_at: 2025-05-15T15:38:01Z
author_association: CONTRIBUTOR
diff_hunk: @@ -83,4 +89,63 @@ void whenOnlyToDateIsSetThenThrowException() {
 
     assertTrue(actualMessage.contains(expectedMessage));
   }
+
+  @Test
+  void testToOffsetDateTimeEndOfTheDay() {
+    OffsetDateTime expected = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeEndOfTheDay(
+      LocalDate.now());
+
+    assertConversion(expected, result);
+  }
+
+  @Test
+  void testToOffsetDateTimeStartOfTheDay() {
+    OffsetDateTime expected = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTime result = DateUtils.toOffsetDateTimeStartOfTheDay(
+      LocalDate.now());
+
+    assertConversion(expected, result);
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeEndOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeStartOfTheDay(null));
+  }
+
+  @Test
+  void givenNullLocalDateWhenToOffsetDateTimeStartOfTheDayThenReturnNull() {
+    assertNull(DateUtils.toOffsetDateTimeStartOfTheDay(null));
+  }
+
+  @Test
+  void testToRangeClosedOffsetDateTimeIntervalFilter() {
+    OffsetDateTime from = LocalDate.now().atStartOfDay(Constants.ZONEID).toOffsetDateTime();
+    OffsetDateTime to = LocalDateTime.of(LocalDate.now(),
+        LocalTime.MAX.truncatedTo(java.time.temporal.ChronoUnit.MILLIS))
+      .atZone(Constants.ZONEID).toOffsetDateTime();
+
+    OffsetDateTimeIntervalFilter expected = new OffsetDateTimeIntervalFilter(from, to);
+
+    it.gov.pagopa.pu.processexecutions.dto.generated.OffsetDateTimeIntervalFilter result = DateUtils.toRangeClosedOffsetDateTimeIntervalFilter(
+      new LocalDateIntervalFilter(LocalDate.now(), LocalDate.now()));
+
+    assertNotNull(result);
+    assertEquals(expected.getFrom(), result.getFrom());
+    assertEquals(expected.getTo(), result.getTo());
+  }
+
+  private static void assertConversion(OffsetDateTime expected, OffsetDateTime result) {
+    assertNotNull(result);
+    assertEquals(expected.getYear(), result.getYear());
+    assertEquals(expected.getMonthValue(), result.getMonthValue());
+    assertEquals(expected.getDayOfMonth(), result.getDayOfMonth());
+    assertEquals(expected.getHour(), result.getHour());
+    assertEquals(expected.getMinute(), result.getMinute());
+    assertEquals(expected.getSecond(), result.getSecond());
+  }
path: src/test/java/it/gov/pagopa/pu/bff/util/DateUtilsTest.java
user: login: antonioT90
body: This has not been resolved
created_at: 2025-05-15T15:38:59Z
author_association: CONTRIBUTOR

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-05-16T08:53:24Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=pagopa_p4pa-pu-bff&pullRequest=118) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 New issues](https://sonarcloud.io/project/issues?id=pagopa_p4pa-pu-bff&pullRequest=118&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=pagopa_p4pa-pu-bff&pullRequest=118&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=pagopa_p4pa-pu-bff&pullRequest=118&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [100.0% Coverage on New Code](https://sonarcloud.io/component_measures?id=pagopa_p4pa-pu-bff&pullRequest=118&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=pagopa_p4pa-pu-bff&pullRequest=118&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=pagopa_p4pa-pu-bff&pullRequest=118)


author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T09:30:26Z
body: :tada: This PR is included in version 1.48.0 :tada:

The release is available on [GitHub release](https://github.com/pagopa/p4pa-pu-bff/releases/tag/develop-v1.48.0)

Your **[semantic-release](https://github.com/semantic-release/semantic-release)** bot :package::rocket:
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T18:08:57Z
body: :tada: This PR is included in version 1.4.0 :tada:

The release is available on [GitHub release](https://github.com/pagopa/p4pa-pu-bff/releases/tag/uat-v1.4.0)

Your **[semantic-release](https://github.com/semantic-release/semantic-release)** bot :package::rocket:
author_association: NONE
user: login: github-actions[bot]
created_at: 2026-04-30T10:13:01Z
body: :tada: This PR is included in version 1.0.0 :tada:

The release is available on [GitHub release](https://github.com/pagopa/p4pa-pu-bff/releases/tag/v1.0.0)

Your **[semantic-release](https://github.com/semantic-release/semantic-release)** bot :package::rocket:
author_association: NONE