diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8caa046668ab266040c157efd976d7ccc4cb2e32..fb70e42398f2b04b2d312f98c9350b6fc4b87921 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
 # Version 1.104 (not yet released)
 
+* Fixed issue with in memory data flows. Such as the duplicate contacts.
 * Added field for bounded calculations. Bounded calculations are calculations where you specify a minimum bound and maximum bound. If the value is outside the bounds the minimum value or maximum value is shown.
 
 # Version 1.103
diff --git a/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php b/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php
index f9ff18fe850b0c06c5361d7271eccb5b8bf55980..248b67ba957a3d910d03652f2f7acd50e770ffc1 100644
--- a/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php
+++ b/Civi/DataProcessor/DataFlow/CombinedDataFlow/CombinedDataFlow.php
@@ -127,20 +127,16 @@ class CombinedDataFlow extends AbstractDataFlow implements MultipleSourceDataFlo
         $dataFlow->convertJoinClausesToWhereClause();
       }
     }
-    for($i=0; $i<count($this->sourceDataFlowDescriptions); $i++) {
-      do {
-        $batch = [];
-        try {
-          $batch = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$i]->getDataFlow(), $this->batchSize);
-          for($j=$i+1; $j<count($this->sourceDataFlowDescriptions); $j++) {
-            $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->prepareRightDataFlow($batch, $this->sourceDataFlowDescriptions[$j]->getDataFlow());
-            $rightRecords = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$j]->getDataFlow());
-            $batch = $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->join($batch, $rightRecords);
-          }
-          $allRecords = array_merge($allRecords, $batch);
-        } catch (DataFlowException $e) {
-        }
-      } while(count($batch) >= $this->batchSize || $this->batchSize == 0);
+    try {
+      $batch = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[0]->getDataFlow());
+      for($j=1; $j<count($this->sourceDataFlowDescriptions); $j++) {
+        $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->prepareRightDataFlow($batch, $this->sourceDataFlowDescriptions[$j]->getDataFlow());
+        $rightRecords = $this->getAllRecordsFromDataFlowAsArray($this->sourceDataFlowDescriptions[$j]->getDataFlow());
+        $batch = $this->sourceDataFlowDescriptions[$j]->getJoinSpecification()->join($batch, $rightRecords);
+      }
+      $allRecords = array_merge($allRecords, $batch);
+    } catch (DataFlowException $e) {
+      // Do nothing
     }
     $this->recordCount = count($allRecords);