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 10ef847350f9ab59f6ecf79dbe8222543d531b38..e14f8150cc581f9e4b695c6465cb2b2d1998d014 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -20,16 +20,11 @@
 package no.nibio.vips.logic.service;
 
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ibm.icu.util.ULocale;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.URI;
-import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.nio.file.Files;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
@@ -57,7 +52,6 @@ import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
@@ -70,19 +64,20 @@ import no.nibio.vips.logic.entity.Observation;
 import no.nibio.vips.logic.entity.ObservationIllustrationPK;
 import no.nibio.vips.logic.entity.ObservationStatusType;
 import no.nibio.vips.logic.entity.ObservationSyncInfo;
-import no.nibio.vips.logic.entity.Organism;
 import no.nibio.vips.logic.entity.PolygonService;
 import no.nibio.vips.logic.entity.VipsLogicRole;
 import no.nibio.vips.logic.entity.VipsLogicUser;
 import no.nibio.vips.logic.entity.rest.ObservationListItem;
 import no.nibio.vips.logic.entity.rest.PointMappingResponse;
 import no.nibio.vips.logic.entity.rest.ReferencedPoint;
+import no.nibio.vips.logic.messaging.MessagingBean;
 import no.nibio.vips.logic.util.GISEntityUtil;
 import no.nibio.vips.logic.util.Globals;
 import org.jboss.resteasy.annotations.GZIP;
 import org.wololo.geojson.Feature;
 
-import org.apache.commons.codec.binary.Base64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @copyright 2016-2021 <a href="http://www.nibio.no/">NIBIO</a>
@@ -91,6 +86,8 @@ import org.apache.commons.codec.binary.Base64;
 @Path("rest/observation")
 public class ObservationService {
     
+    private static Logger LOGGER = LoggerFactory.getLogger(ObservationService.class);
+    
     @Context
     private HttpServletRequest httpServletRequest;
     
@@ -100,6 +97,8 @@ public class ObservationService {
     ObservationBean observationBean;
     @EJB
     OrganismBean organismBean;
+    @EJB
+    MessagingBean messagingBean;
     
     /*
      * NOTE TO SELF
@@ -784,9 +783,30 @@ public class ObservationService {
 					{
 						return Response.status(Status.BAD_REQUEST).entity("The observation is missing location data.").build();
 					}
+                                        
+                                        boolean sendNotification = false;    
+                                        // Storing approval status
+                                        // If superusers or user with correct authorization: Set as approved and send message
+                                        if(userBean.authorizeUser(user, VipsLogicRole.OBSERVATION_AUTHORITY, VipsLogicRole.ORGANIZATION_ADMINISTRATOR, VipsLogicRole.SUPERUSER))
+                                        {
+                                            LOGGER.debug("user properly authorized to register observations");
+                                            LOGGER.debug("observation Id=" + mergeObs.getObservationId());
+                                            LOGGER.debug("broadcast this message? " + mergeObs.getBroadcastMessage());
+                                            if(mergeObs.getObservationId() == null || mergeObs.getObservationId() <= 0)
+                                            {
+                                                mergeObs.setStatusTypeId(Observation.STATUS_TYPE_ID_APPROVED);
+                                                sendNotification = mergeObs.getBroadcastMessage(); // Only send the ones intended for sending
+                                            }
+                                        }
+                                        else if(mergeObs.getObservationId() == null || mergeObs.getObservationId() <= 0)
+                                        {
+                                            mergeObs.setStatusTypeId(Observation.STATUS_TYPE_ID_PENDING);
+                                        }
 					
 					// We need to get an observation Id before storing the illustrations!
 					mergeObs = observationBean.storeObservation(mergeObs);
+                                        
+                                        
 					
 					// ObservationIllustrationSet
 					// Including data that may need to be stored
@@ -807,8 +827,18 @@ public class ObservationService {
 							}
 						}
 					}
-						
-					
+                                        LOGGER.debug("sendNotification? " + sendNotification);
+                                        
+                                        // All transactions finished, we can send notifications
+                                        // if conditions are met
+                                        if(sendNotification && !
+                                                (System.getProperty("DISABLE_MESSAGING_SYSTEM") != null && System.getProperty("DISABLE_MESSAGING_SYSTEM").equals("true"))
+                                                )
+                                        {
+                                            LOGGER.debug("Sending the message!");
+                                            messagingBean.sendUniversalMessage(mergeObs);
+                                        }
+                                        
 					return Response.ok().entity(mergeObs).build();
 				}
 			} catch (IOException e) {
@@ -817,6 +847,7 @@ public class ObservationService {
     	}
     	catch(Exception e)
     	{
+            e.printStackTrace();
     		return Response.serverError().entity(e).build();
     	}