diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
index cbd146d2878aa365cd24c7beb64ba9d8a0e71e9d..dee3726f2ed43d0d95ca7a19780beaaff7b8e5b8 100644
--- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js
+++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js
@@ -18,8 +18,6 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
     if (vars.exists("$param.OfferOriginal_Id_param") && vars.get("$param.OfferOriginal_Id_param"))
         OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId, discount);
     
-    var binaryColumns;
-    var binaries;
     var activityId = vars.get("$param.ActivityId_param");
     if (activityId)
     {
@@ -30,30 +28,14 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
             "OBJECT_TYPE": ContextUtils.getCurrentContextId(),
             "OBJECT_ROWID": offerId
         }, "ACTIVITYLINK", "ACTIVITYLINKID");
-
-        binaryColumns = "BINDATA, FILENAME, DESCRIPTION, KEYWORD";
-        binaries = newSelect(binaryColumns, SqlUtils.getBinariesAlias())
-                                .from("ASYS_BINARIES")
-                                .where("ASYS_BINARIES.ROW_ID", activityId)
-                                .table()
-        for (i = 0; i < binaries.length; i++)
-        {
-            SingleBinaryUtils.insert("OFFER", "DOCUMENT", offerId, binaries[i][0], binaries[i][1], binaries[i][2], binaries[i][3], SqlUtils.getBinariesAlias())
-        }
+        BinaryUtils.copyBinaries("ACTIVITY", activityId, "OFFER", offerId, "DOCUMENT");
     }
+    
     var taskId = vars.get("$param.TaskId_param");
     if (taskId)
     {
-        binaryColumns = "BINDATA, FILENAME, DESCRIPTION, KEYWORD";
-        binaries = newSelect(binaryColumns, SqlUtils.getBinariesAlias())
-                                .from("ASYS_BINARIES")
-                                .where("ASYS_BINARIES.ROW_ID", taskId)
-                                .table()
-        for (i = 0; i < binaries.length; i++)
-        {
-            SingleBinaryUtils.insert("OFFER", "DOCUMENT", taskId, binaries[i][0], binaries[i][1], binaries[i][2], binaries[i][3], SqlUtils.getBinariesAlias())
-        }
+        BinaryUtils.copyBinaries("TASK", taskId, "OFFER", offerId, "DOCUMENT");
     }
 }
 
-WorkflowSignalSender.inserted();
\ No newline at end of file
+WorkflowSignalSender.inserted();
diff --git a/process/Binary_lib/process.js b/process/Binary_lib/process.js
index a1a13b0307be55f2056f24961b76f93f1f89f338..64a4248d912b75af1cc439a0229441112876ad7c 100644
--- a/process/Binary_lib/process.js
+++ b/process/Binary_lib/process.js
@@ -3,6 +3,51 @@ import("system.vars");
 import("system.db");
 import("Sql_lib");
 
+/**
+ * A static utility class for binarys using database binary functions.
+ * It provides methods to handle multiple binary data.<br>
+ * <p>
+ * <b><u>Do not create an instance of this!</u></b>
+ * @class
+ */
+function BinaryUtils() {}
+
+/**
+ * Copies the binaries
+ * 
+ * @param {String} pSourceAssignmentTable                   <p>
+ *                                                          The source table from which the binary data will fetched.<br>
+ *                                                          (e.g.: ASYS_BINARIES).<br>
+ * @param {String} pSourceAssignmentRowId                   <p>
+ *                                                          The source row id.<br>
+ *                                                          (e.g.: UUID of the record)<br>
+ * @param {String} pTargetAssignmentTable                   <p>
+ *                                                          The target table from which the binary data will fetched.<br>
+ *                                                          (e.g.: ASYS_BINARIES).<br>
+ * @param {String} pTargetAssignmentRowId                   <p>
+ *                                                          The target row id.<br>
+ *                                                          (e.g.: UUID of the record)<br>
+ * @param {String} pAssignmentName                          <p>
+ *                                                          The name of the assignment/container name.<br>
+ *                                                          (e.g.: DOCUMENT)<br>
+ * @param {String} pAlias=SqlUtils.getBinariesAlias()       <p>
+ *                                                          The database alias.<br>
+ *                                                          (e.g.: _____SYSTEMALIAS)
+ */
+BinaryUtils.copyBinaries = function(pSourceAssignmentTable, pSourceAssignmentRowId, pTargetAssignmentTable, pTargetAssignmentRowId, pAssignmentName, pAlias)
+{
+    pAlias = pAlias || SqlUtils.getBinariesAlias();
+    var binMetadata = db.getBinaryMetadata(pSourceAssignmentTable, pAssignmentName, pSourceAssignmentRowId, false, pAlias);
+    var binContents = db.getBinaryContents(binMetadata.map(function(curr){return curr.id}), pAlias);
+    for(var i = 0; i < binMetadata.length; i++)
+    {
+        db.insertBinary(
+            pTargetAssignmentTable, pAssignmentName, pTargetAssignmentRowId, "", binContents[i],
+            binMetadata[i].filename, binMetadata[i].description, binMetadata[i].keyword, pAlias
+        );
+    }
+}
+
 /**
  * A static utility class for binarys using database binary functions.
  * It provides methods to ensure that only one binary for a AssignmentTable, AssignmentName and AssignmentRowId exist.<br>