diff --git a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
index b65ec6c3bd195ac29f8f063d5b0d9bb82a2337bf..84fc06f83aeb5251fc18679a1c41eaf6b9649afc 100755
--- a/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
+++ b/src/main/java/no/nibio/vips/logic/controller/servlet/ObservationController.java
@@ -521,7 +521,9 @@ public class ObservationController extends HttpServlet {
                             
                             // All transactions finished, we can send notifications
                             // if conditions are met
-                            if(sendNotification)
+                            if(sendNotification && !
+                                    (System.getProperty("DISABLE_MESSAGING_SYSTEM") != null && System.getProperty("DISABLE_MESSAGING_SYSTEM").equals("true"))
+                                    )
                             {
                                 SessionControllerGetter.getMessagingBean().sendUniversalMessage(observation);
                             }
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
index 6fb2733c7f7ee82081f16cd01b2bcc2b8b3ab879..e2805e4cd64081db98f98e0fc8235a2015d6dbc4 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -19,6 +19,8 @@
 
 package no.nibio.vips.logic.service;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.webcohesion.enunciate.metadata.Facet;
 import java.io.IOException;
 import java.net.URI;
@@ -30,6 +32,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
+import java.util.function.Predicate;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import java.util.stream.Collectors;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.Consumes;
@@ -451,13 +456,16 @@ public class ObservationService {
 
     private List<Observation> getFilteredObservationsFromBackend(Integer organizationId, Integer pestId, Integer cropId, List<Integer> cropCategoryId, String fromStr, String toStr, VipsLogicUser user) {
         List<Observation> filteredObservations = this.getFilteredObservationsFromBackend(organizationId, pestId, cropId, cropCategoryId, fromStr, toStr);
+        //filteredObservations.forEach(o->System.out.println(o.getObservationId()));
         // If superuser or orgadmin: Return everything, unchanged, uncensored
         if(user != null && (user.isSuperUser() || user.isOrganizationAdmin()))
         {
             return filteredObservations;
         }
         List<Observation> retVal = filteredObservations.stream().filter(obs->obs.getBroadcastMessage()).collect(Collectors.toList());
+        //retVal.forEach(o->System.out.println(o.getObservationId()));
         retVal = this.maskObservations(retVal);
+        //retVal.forEach(o->System.out.println(o.getObservationId()));
         // If user is not logged in, return only the publicly available observations
         if(user == null)
         {
@@ -493,21 +501,21 @@ public class ObservationService {
         else
         {
             // Loop through, mask
-            List<Observation> maskedObservations = new ArrayList<>();
-            
+            Map<Integer,Observation> maskedObservations = new HashMap<>();
             registeredPolygonServicesInObservationList.keySet().forEach((pService) -> {
-                maskedObservations.addAll(this.maskObservations(pService, registeredPolygonServicesInObservationList.get(pService)));
+                this.maskObservations(pService, registeredPolygonServicesInObservationList.get(pService))
+                        .forEach(o->maskedObservations.put(o.getObservationId(), o));
             });
             
             // Adding the rest of the observations (the ones that don't need masking)
-            
-            return maskedObservations;
+            observations.stream().filter(o->maskedObservations.get(o.getObservationId())==null).forEach(o->maskedObservations.put(o.getObservationId(), o));
+            return new ArrayList(maskedObservations.values());
         }
-        //throw new UnsupportedOperationException();
     }
     
     private List<Observation> maskObservations(PolygonService polygonService, List<Observation> observations)
     {
+        //observations.forEach(o->System.out.println(o.getObservationId()));
         Client client = ClientBuilder.newClient();
         WebTarget target = client.target(polygonService.getGisSearchUrlTemplate());
         List<ReferencedPoint> points = observations.stream()
@@ -527,9 +535,15 @@ public class ObservationService {
                     }
                     return rp;
         }).collect(Collectors.toList());
+        /*System.out.println("maskobservations - target.request() about to be called");
+        ObjectMapper oMapper = new ObjectMapper();
+        try {
+            System.out.println(oMapper.writeValueAsString(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON)));
+        } catch (JsonProcessingException ex) {
+            Logger.getLogger(ObservationService.class.getName()).log(Level.SEVERE, null, ex);
+        }*/
         PointMappingResponse response = target.request(MediaType.APPLICATION_JSON)
                 .post(Entity.entity(points.toArray(new ReferencedPoint[points.size()]), MediaType.APPLICATION_JSON), PointMappingResponse.class);
-
         // We need to loop through the observations and find corresponding featurecollections and replace those
         Map<Integer, Feature> indexedPolygons = new HashMap<>();
         for(Feature feature:response.getFeatureCollection().getFeatures())