diff --git a/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationService.java b/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationService.java
index 241a21db6f1911f3d851149e892a11f7e1ca52eb..0e03e739fe8e851b85efdd1e74afeb512ccc9951 100644
--- a/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationService.java
+++ b/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationService.java
@@ -14,12 +14,6 @@ package org.eclipsefoundation.git.eca.service.impl;
 import java.util.List;
 import java.util.Optional;
 
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-import jakarta.ws.rs.WebApplicationException;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.Response.Status;
-
 import org.apache.commons.lang3.StringUtils;
 import org.eclipsefoundation.core.model.RequestWrapper;
 import org.eclipsefoundation.efservices.api.models.Project;
@@ -36,11 +30,15 @@ import org.eclipsefoundation.git.eca.namespace.APIStatusCode;
 import org.eclipsefoundation.git.eca.service.UserService;
 import org.eclipsefoundation.git.eca.service.ValidationService;
 import org.eclipsefoundation.git.eca.service.ValidationStatusService;
-import org.eclipsefoundation.persistence.dao.PersistenceDao;
-import org.eclipsefoundation.persistence.service.FilterService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+
 /**
  * Default service for validating external requests for ECA validation, as well as storing and retrieving information
  * about historic requests.
@@ -62,10 +60,6 @@ public class DefaultValidationService implements ValidationService {
     @Inject
     ValidationStatusService statusService;
 
-    @Inject
-    PersistenceDao dao;
-    @Inject
-    FilterService filters;
 
     @Override
     public ValidationResponse validateIncomingRequest(ValidationRequest req, RequestWrapper wrapper) {
diff --git a/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationStatusService.java b/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationStatusService.java
index 96359379de9761a8460defe253d1d8821da2fa84..18963669c7c73198fb6fa296929742cbd1d675ae 100644
--- a/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationStatusService.java
+++ b/src/main/java/org/eclipsefoundation/git/eca/service/impl/DefaultValidationStatusService.java
@@ -102,7 +102,7 @@ public class DefaultValidationStatusService implements ValidationStatusService {
                 .entrySet()
                 .stream()
                 .filter(e -> !ValidationResponse.NIL_HASH_PLACEHOLDER.equalsIgnoreCase(e.getKey()))
-                .map(e -> recordUpdatedValidationStatus(req, statuses, p, e))
+                .map(e -> recordUpdatedValidationStatus(req, wrapper, p, e))
                 .toList();
         String fingerprint = CommitHelper.generateRequestHash(req);
         // update the base commit status and messages
@@ -122,8 +122,8 @@ public class DefaultValidationStatusService implements ValidationStatusService {
      * @param e the current commit that is being updated
      * @return the new or updated commit status
      */
-    private CommitValidationStatus recordUpdatedValidationStatus(ValidationRequest req, List<CommitValidationStatus> existingStatuses,
-            Project p, Entry<String, CommitStatus> e) {
+    private CommitValidationStatus recordUpdatedValidationStatus(ValidationRequest req, RequestWrapper wrap, Project p,
+            Entry<String, CommitStatus> e) {
         // get the commit for current status
         Optional<Commit> commit = req.getCommits().stream().filter(c -> e.getKey().equals(c.getHash())).findFirst();
         if (commit.isEmpty()) {
@@ -132,11 +132,16 @@ public class DefaultValidationStatusService implements ValidationStatusService {
             return null;
         }
         Commit c = commit.get();
+        // lookup the existing status one at a time to prevent issues with near parallel requests/duplicate commit data
+        MultivaluedMap<String, String> params = new MultivaluedMapImpl<>();
+        params.add(GitEcaParameterNames.SHAS_RAW, c.getHash());
+        params.add(GitEcaParameterNames.REPO_URL_RAW, req.getRepoUrl().toString());
+        List<CommitValidationStatus> existingStatus = dao.get(new RDBMSQuery<>(wrap, filters.get(CommitValidationStatus.class), params));
+
         // update the status if present, otherwise make new one.
-        Optional<CommitValidationStatus> status = existingStatuses.stream().filter(s -> e.getKey().equals(s.getCommitHash())).findFirst();
         CommitValidationStatus base;
-        if (status.isPresent()) {
-            base = status.get();
+        if (existingStatus != null && !existingStatus.isEmpty()) {
+            base = existingStatus.get(0);
             if (LOGGER.isTraceEnabled()) {
                 LOGGER
                         .trace("Found existing commit status for commit '{}' in repository {}, {} existing errors", c.getHash(),
@@ -200,6 +205,9 @@ public class DefaultValidationStatusService implements ValidationStatusService {
      * @return copy of the input list for easier chaining with updated statuses.
      */
     private List<CommitValidationStatus> deduplicateErrorMessages(List<CommitValidationStatus> outgoing) {
+        if (outgoing == null) {
+            return Collections.emptyList();
+        }
         outgoing.forEach(s -> s.getErrors().removeIf(distinctByKey(err -> err.getCommit().getCommitHash() + err.getStatusCode())));
         return outgoing;
     }