diff --git a/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js
index 471416a0f8668d62254f1bcdb2f73c652b8925af..982aa7d22404ee21ac7c5f7d26da735265a8716e 100644
--- a/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js
+++ b/entity/CampaignAddParticipants_entity/entityfields/isoperationvalid/valueProcess.js
@@ -69,7 +69,12 @@ if(selectedCampaignId != '')
     {
         participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition;
         logging.log("im isOperationValid -> ");
-        countParticipantsToAdd = CampaignUtils.GetContactCountByCondition(participantCondition, isUpdate);
+        
+        let useRightJoinToGetOrgs = "false";
+        if(targetTable == "ORGANISATION")
+            useRightJoinToGetOrgs = "true";
+        
+        countParticipantsToAdd = CampaignUtils.GetContactCountByCondition(participantCondition, isUpdate, useRightJoinToGetOrgs);
                 logging.log("countParticipantsToAdd -> " + countParticipantsToAdd);
 
         /*
@@ -84,7 +89,7 @@ if(selectedCampaignId != '')
         else
             whereCondition = "CAMPAIGNPARTICIPANT.CAMPAIGN_ID = '" + selectedCampaignId + "'";
 
-        countParticipantsAlreadyInCampaign = CampaignUtils.GetParticipantsAlreadyAddedCountByCondition(whereCondition, participantCondition);
+        countParticipantsAlreadyInCampaign = CampaignUtils.GetParticipantsAlreadyAddedCountByCondition(whereCondition, participantCondition, useRightJoinToGetOrgs);
         //CAMPAIGNPARTICIPANT.CAMPAIGN_ID = '" + pCampaignId + "'"
     }
     countValidParticipantsToAdd = countParticipantsToAdd - countParticipantsAlreadyInCampaign;
diff --git a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
index e571d933bc02e7e44cdf574021006b6e0067c845..6ae8f16c2a96b3053d9296eeb0156911ac00090e 100644
--- a/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
+++ b/entity/CampaignAddParticipants_entity/recordcontainers/jdito/onInsert.js
@@ -38,6 +38,10 @@ function _handleCondition(pCampaignId, pTargetTableName, pCondition)
 {
     let contactIdsToHandle = [];
     
+    let useRightJoinToGetOrgs = "false";
+    if(pTargetTableName == "ORGANISATION")
+        useRightJoinToGetOrgs = "true";
+        
     /*
      * If it's an update of participants, get the participants defined by the condition in the selected campaign
      * Because they already are participants, no restrictions apply to the affected IDs.
@@ -47,10 +51,10 @@ function _handleCondition(pCampaignId, pTargetTableName, pCondition)
      */
     if(isUpdate == "true")
     {
-        contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition)
+        contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs)
     }
     else
-        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition);
+        contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs);
     
     logging.log("contactIdsToHandle -> " + contactIdsToHandle);
     _handleRowIds(contactIdsToHandle);
diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js
index e16e5b948a2e8d13f493eb624f29940f510e8580..d055712e833a7f57ba4fd0c248d4329be0309b3a 100644
--- a/process/Campaign_lib/process.js
+++ b/process/Campaign_lib/process.js
@@ -335,10 +335,14 @@ CampaignUtils.GetParticipantsAlreadyAddedCountByRowId = function(pWhereCondition
     return db.cell(query)
 }
 
-CampaignUtils.GetParticipantsAlreadyAddedCountByCondition = function(pWhereCondition, pCondition)
+CampaignUtils.GetParticipantsAlreadyAddedCountByCondition = function(pWhereCondition, pCondition, pRightJoinContacts)
 {
     let query = "select count(*) from PERSON"
-    + " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
+    
+    if(pRightJoinContacts == "true")
+        query += " right"
+    
+    query += " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
     + " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
     + " left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"
     + " left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID"
@@ -365,10 +369,14 @@ CampaignUtils.GetContactIdsNotInCampaignByRowIds = function(pCampaignId, pPartic
     return db.array(db.COLUMN, query)
 }
 
-CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition)
+CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts)
 {
     let query = "select CONTACT.CONTACTID from PERSON"
-    + " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
+    
+    if(pRightJoinContacts == "true")
+        query += " right"
+    
+    query += " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
     + " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
     + " left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"
     + " where CONTACT.CONTACTID not in"
@@ -377,29 +385,37 @@ CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCon
     
     if(pCondition != "")
         query += " and " + pCondition;
-    
+    logging.log("GetContactIdsNotInCampaignByCondition -> " + query);
     return db.array(db.COLUMN, query);
 }
 
-CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition)
+CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts)
 {
     let query = "select CONTACT.CONTACTID from PERSON"
-    + " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
+    
+    if(pRightJoinContacts == "true")
+        query += " right"
+    
+    query += " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
     + " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
     + " left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"
     + " left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID"
     + " where " + pCondition
     + " and CAMPAIGNPARTICIPANT.CAMPAIGN_ID = '" + pCampaignId + "'";
-
+        logging.log("GetContactIdsInCampaignByCondition -> " + GetContactIdsInCampaignByCondition);
     return db.array(db.COLUMN, query);
 }
 
-CampaignUtils.GetContactCountByCondition = function(pCondition, pLookInCampaignOnly)
+CampaignUtils.GetContactCountByCondition = function(pCondition, pLookInCampaignOnly, pRightJoinContacts)
 {
     let query = "select count(*) from PERSON"
-                + " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
-                + " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
-                + " left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"
+    
+    if(pRightJoinContacts == "true")
+        query += " right"
+    
+    query += " join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID)"
+    query += " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
+    query += " left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"
                 
     if(pLookInCampaignOnly == "true")
         query += " left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID";