diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
index 765ab4952ebc53f5733ec38b05f5b85fef838e2e..667c71412d1a86c3a02d75d7c8a3c2b7013bde50 100644
--- a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js
@@ -1,3 +1,5 @@
+import("KeywordRegistry_basic");
+import("Communication_lib");
 import("Workflow_lib");
 import("Binary_lib");
 import("Sql_lib");
@@ -28,28 +30,61 @@ if (template && template.content && BulkMailUtils.isValidTemplateType(template.t
     SingleBinaryUtils.insert("BULKMAIL", "DOCUMENT", bulkMailId, template.content, template.filename);
 }
 
-var contactIds = [];
+// CopyBulkMail Recipients
+if (vars.get("$param.CopyBulkMailId_param")){
+    
+    var BulkMailParam = vars.get("$param.CopyBulkMailId_param");
 
-if (vars.get("$param.CopyBulkMailId_param"))
-{
-    var config = entities.createConfigForLoadingRows()
-                         .entity("BulkMailRecipient_entity")
-                         .provider("BulkMailRecipients")
-                         .addParameter("BulkMailId_param", vars.get("$param.CopyBulkMailId_param"))
-                         .fields(["CONTACT_ID"]);
-                         
-    var copiedRecipients = entities.getRows(config);
-
-    contactIds = copiedRecipients.map(function(pRecipient) 
+    var copiedRecipients = newSelect("CONTACT_ID, EMAIL_ADDRESS, IS_TEST_RECIPIENT")
+                            .from("BULKMAILRECIPIENT")
+                            .join("CONTACT", "BULKMAILRECIPIENT.CONTACT_ID = CONTACT.CONTACTID")
+                            .where("BULKMAILRECIPIENT.BULKMAIL_ID", BulkMailParam)
+                            // check if there's a commrestriction
+                            .and(new CommunicationSettingsCondition()
+                                .emails(CommUtil.getStandardSubSqlMail())
+                                .rejected()
+                                .existNoSettings()
+                                .buildCondition())
+                            .table()
+
+    var sqlBuilder = new SqlBuilder();
+
+    var inserts = copiedRecipients.map(function([contactId, email, test])
     {
-        return pRecipient["CONTACT_ID"];
+        return sqlBuilder.buildInsertStatement({
+            "BULKMAIL_ID": bulkMailId,
+            "CONTACT_ID": contactId,
+            "STATUS": $KeywordRegistry.bulkMailRecipientStatus$pending(),
+            "EMAIL_ADDRESS": email,
+            "IS_TEST_RECIPIENT": test
+        }, "BULKMAILRECIPIENT", "BULKMAILRECIPIENTID");
     });
-}
+    db.inserts(inserts);
+    
+    //CopyBulkMail TestRecipients
 
-if (vars.getString("$param.PresetRecipients_param"))
-    contactIds = contactIds.concat(JSON.parse(vars.getString("$param.PresetRecipients_param")));
+    copiedRecipients = newSelect("CONTACT_ID, EMAIL_ADDRESS")
+                            .from("BULKMAILTESTRECIPIENT")
+                            .join("CONTACT", "BULKMAILTESTRECIPIENT.CONTACT_ID = CONTACT.CONTACTID")
+                            .where("BULKMAILTESTRECIPIENT.BULKMAIL_ID", BulkMailParam)
+                            // check if there's a commrestriction
+                            .and(new CommunicationSettingsCondition()
+                                .emails(CommUtil.getStandardSubSqlMail())
+                                .rejected()
+                                .existNoSettings()
+                                .buildCondition())
+                            .table()
 
-if (contactIds && contactIds.length > 0)
-    BulkMailUtils.addRecipients(bulkMailId, BulkMailUtils.filterNewRecipients(bulkMailId, contactIds));
+    sqlBuilder = new SqlBuilder();
 
+    inserts = copiedRecipients.map(function([contactId, email])
+    {
+        return sqlBuilder.buildInsertStatement({
+            "BULKMAIL_ID": bulkMailId,
+            "CONTACT_ID": contactId,
+            "EMAIL_ADDRESS": email
+        }, "BULKMAILTESTRECIPIENT", "BULKMAILTESTRECIPIENTID");
+    });
+    db.inserts(inserts);
+}
 WorkflowSignalSender.inserted();
\ No newline at end of file