diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerFilter.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..633179c426acd8ed830568b1926821b9c0e77b7d
--- /dev/null
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/util/IndexerFilter.java
@@ -0,0 +1,49 @@
+
+package org.opengroup.osdu.indexer.util;
+
+import java.io.IOException;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+import lombok.extern.java.Log;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Log
+@Component
+public class IndexerFilter implements Filter {
+
+    private final DpsHeaders dpsHeaders;
+
+    @Autowired
+    public IndexerFilter(DpsHeaders dpsHeaders) {
+        this.dpsHeaders = dpsHeaders;
+    }
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
+                         FilterChain filterChain)
+            throws IOException, ServletException {
+
+        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
+
+        dpsHeaders.addCorrelationIdIfMissing();
+        httpResponse.addHeader(DpsHeaders.CORRELATION_ID, dpsHeaders.getCorrelationId());
+
+        filterChain.doFilter(servletRequest, servletResponse);
+    }
+
+    @Override
+    public void destroy() {
+    }
+
+}
diff --git a/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexerFilterTest.java b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexerFilterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d73609676d11b1c91c8c2c21b9874f2015efe9e
--- /dev/null
+++ b/indexer-core/src/test/java/org/opengroup/osdu/indexer/util/IndexerFilterTest.java
@@ -0,0 +1,43 @@
+package org.opengroup.osdu.indexer.util;
+
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opengroup.osdu.core.common.model.http.DpsHeaders;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.IOException;
+
+@RunWith(MockitoJUnitRunner.class)
+public class IndexerFilterTest {
+
+
+    @InjectMocks
+    private IndexerFilter indexerFilter;
+
+    @Mock
+    private DpsHeaders dpsHeaders;
+
+    @Test
+    public void shouldSetCorrectResponseHeaders() throws IOException, ServletException {
+        HttpServletRequest httpServletRequest = Mockito.mock(HttpServletRequest.class);
+        HttpServletResponse httpServletResponse = Mockito.mock(HttpServletResponse.class);
+        FilterChain filterChain = Mockito.mock(FilterChain.class);
+
+        Mockito.when(dpsHeaders.getCorrelationId()).thenReturn("correlation-id-value");
+
+        indexerFilter.doFilter(httpServletRequest, httpServletResponse, filterChain);
+
+        Mockito.verify(httpServletResponse).addHeader("correlation-id", "correlation-id-value");
+        Mockito.verify(filterChain).doFilter(httpServletRequest, httpServletResponse);
+    }
+}
+
diff --git a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
index cd7d4622c847e13f109c6ee89adc8c679b645144..525ccfa928b56f1bd5d08402621a8ffb331cedd5 100644
--- a/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
+++ b/provider/indexer-gcp/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
@@ -75,7 +75,7 @@ public class IndexFilter implements Filter {
         }
 
         filterChain.doFilter(servletRequest, servletResponse);
-
+        
         HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
         Map<String, List<Object>> standardHeaders = ResponseHeaders.STANDARD_RESPONSE_HEADERS;
         for (Map.Entry<String, List<Object>> header : standardHeaders.entrySet()) {
diff --git a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
index 12cffcf01340bf7c7ce763e2ba7a19202ed1a8e6..97244e67ce9a4cd9130807cd0a437c77d4064c82 100644
--- a/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
+++ b/provider/indexer-reference/src/main/java/org/opengroup/osdu/indexer/middleware/IndexFilter.java
@@ -90,7 +90,7 @@ public class IndexFilter implements Filter {
     }
 
     filterChain.doFilter(servletRequest, servletResponse);
-
+    
     HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
     Map<String, List<Object>> standardHeaders = ResponseHeaders.STANDARD_RESPONSE_HEADERS;
     for (Map.Entry<String, List<Object>> header : standardHeaders.entrySet()) {
@@ -99,6 +99,7 @@ public class IndexFilter implements Filter {
     if (httpResponse.getHeader(DpsHeaders.CORRELATION_ID) == null) {
       httpResponse.addHeader(DpsHeaders.CORRELATION_ID, dpsHeaders.getCorrelationId());
     }
+
   }
 
   @Override