diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
index 28d62984e0c8e16e9afa6123584f9c1102d88c4c..cfdc84490dd7b9e30d2622127a94c2b6bb404a0f 100644
--- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
+++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod
@@ -174,6 +174,7 @@
         <dbRecordFieldMapping>
           <name>STATUS.value</name>
           <recordfield>BULKMAILRECIPIENT.STATUS</recordfield>
+          <isFilterable v="true" />
         </dbRecordFieldMapping>
         <dbRecordFieldMapping>
           <name>ORGANISATION_ID.value</name>
diff --git a/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js b/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js
index ed3b8531d70d092278f787ddb54e289b20931b4e..06d12d80f3fab307d4bd3964b3c62928786447a2 100644
--- a/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js
+++ b/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js
@@ -1,3 +1,4 @@
+import("KeywordRegistry_basic");
 import("system.result");
 
-result.string("BulkMailSentStatus"); //TODO: keyword registry
\ No newline at end of file
+result.string($KeywordRegistry.bulkMailRecipientStatus()); 
\ No newline at end of file
diff --git a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
index 14a463b10282e215f3b47dd03fdd92b1d94820b8..da34a9438ea7faa052ff3b0a29f523d53aef2a46 100644
--- a/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
+++ b/entity/BulkMailTesting_entity/BulkMailTesting_entity.aod
@@ -15,7 +15,7 @@
     </entityField>
     <entityField>
       <name>TESTING_CONTACT_ID</name>
-      <title>Testing contact</title>
+      <title>Contact</title>
       <consumer>Contacts</consumer>
       <linkedContext>AnyContact</linkedContext>
       <valueProcess>%aditoprj%/entity/BulkMailTesting_entity/entityfields/testing_contact_id/valueProcess.js</valueProcess>
diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod
index 3263111aa5952b67c0c3f5e2e79cd6dde35af6e8..828cdf95b844d3f22b4bf1fef6d0d8a2d7b2d79a 100644
--- a/entity/BulkMail_entity/BulkMail_entity.aod
+++ b/entity/BulkMail_entity/BulkMail_entity.aod
@@ -31,6 +31,7 @@
     <entityField>
       <name>SUBJECT</name>
       <title>Subject</title>
+      <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/subject/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>DESCRIPTION</name>
@@ -167,7 +168,7 @@
     </entityConsumer>
     <entityField>
       <name>TESTING_CONTACT_ID</name>
-      <title>Testing contact</title>
+      <title>Contact</title>
       <consumer>Contacts</consumer>
       <linkedContext>AnyContact</linkedContext>
     </entityField>
diff --git a/entity/BulkMail_entity/entityfields/subject/valueProcess.js b/entity/BulkMail_entity/entityfields/subject/valueProcess.js
new file mode 100644
index 0000000000000000000000000000000000000000..396141a13a13363ebe15621cd3fe7c0ca2f34ff2
--- /dev/null
+++ b/entity/BulkMail_entity/entityfields/subject/valueProcess.js
@@ -0,0 +1,20 @@
+import("system.result");
+import("Email_lib");
+import("Document_lib");
+import("DocumentTemplate_lib");
+import("system.neon");
+import("system.vars");
+
+if (vars.get("$this.value") == null && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+{
+    var upload = vars.get("$field.BINDATA");
+    var template;
+    if (upload)
+    {
+        var binData = DocumentUtil.getBindataFromUpload(upload);
+        var filename = DocumentUtil.getFilenameFromUpload(upload);
+        var type = DocumentUtil.getFileExtensionFromUpload(filename);
+        if (DocumentTemplate.types.fromFileExtension(type) == DocumentTemplate.types.EML)
+            result.string(Email.fromRFC(binData).subject);
+    }
+}
\ No newline at end of file
diff --git a/entity/Letter_entity/recordcontainers/jdito/onInsert.js b/entity/Letter_entity/recordcontainers/jdito/onInsert.js
index 1248954c4ed301dc2822e207a534f449dba7e9b5..98716cf13537f97b52b5c9dd9de70c6e1311af64 100644
--- a/entity/Letter_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/Letter_entity/recordcontainers/jdito/onInsert.js
@@ -8,7 +8,8 @@ import("KeywordRegistry_basic");
 var template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENT_TEMPLATE"));
 var contactId = vars.get("$param.ContactId_param");
 var content = template.getReplacedContentByContactId(contactId, true);
-neon.download(content, template.filename);
+if (template.type)
+    neon.download(content, template.filename);
 
 var links = [];
 if (contactId)
diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js
index 6761dfbbd2d5253d0ae39bd678fe3c631a985738..2bfd37dd64c8f609a694c4b96b5c4eaa797e0cb5 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -342,17 +342,14 @@ TemplateHelper._getReplacementsByContactIds = function (pTemplate, pContactIds)
  */
 TemplateHelper._getReplacedEML = function (pTemplate, pReplacements, pGetEmail)
 {
-    var mailData = mail.parseRFC(util.decodeBase64String(pTemplate.content));
-    var email;
-    var body = TemplateHelper._replaceText(mailData[mail.MAIL_HTMLTEXT], pReplacements);
-    if (pGetEmail)
-    {
-        var sender = TemplateHelper._replaceText(mailData[mail.MAIL_SENDER], pReplacements);
-        var subject = TemplateHelper._replaceText(mailData[mail.MAIL_SUBJECT], pReplacements);
-        email = new Email(null, sender, subject, body);
-    }
-    else
-        email = body;
+    var email = Email.fromRFC(pTemplate.content);
+    email.body = TemplateHelper._replaceText(email.body, pReplacements);
+    if (!pGetEmail)
+        return email.body;
+    
+    email.sender = TemplateHelper._replaceText(email.sender, pReplacements);
+    email.subject = TemplateHelper._replaceText(email.subject, pReplacements);
+    
     return email;
 }
 
diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js
index bdaf02a758707629a40926757f069a3338674fe9..4c6a8af91fcab499c751f8c99be77487dbb4623d 100644
--- a/process/Email_lib/process.js
+++ b/process/Email_lib/process.js
@@ -75,6 +75,19 @@ function Email (pToRecipients, pSender, pSubject, pBody, pCcRecipients, pBccReci
     this.bccRecipients = pBccRecipients || [];
 }
 
+/**
+ * makes an Email object from a RFC mail (base64 encoded)
+ */
+Email.fromRFC = function (pBase64RFC)
+{
+    var mailData = mail.parseRFC(util.decodeBase64String(pBase64RFC));
+    var body = mailData[mail.MAIL_HTMLTEXT];
+    var sender = mailData[mail.MAIL_SENDER];
+    var subject = mailData[mail.MAIL_SUBJECT];
+    
+    return new Email(null, sender, subject, body);
+}
+
 /**
  * loads a document template into the mail body
  *