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 5d651556bb4096b5c119fa04e824bd0eac6ff9d2..1a8c8b3d9a66bb8872c8a8ead47f2ce715e6372f 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -177,7 +177,6 @@ public class ObservationService {
                         userBean.getOrganization(organizationId).getDefaultLocale());
 
         LOGGER.debug("Get filtered observations for user {}", user != null ? user.getUserId() : "<no user>");
-
         List<ObservationListItem> observations = getFilteredObservationsFromBackend(
                 organizationId,
                 pestId,
@@ -782,10 +781,11 @@ public class ObservationService {
             VipsLogicUser user
     ) {
         List<Observation> filteredObservations = this.getFilteredObservationsFromBackend(organizationId, pestId, cropId, cropCategoryId, fromStr, toStr, isPositive);
-        //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;
+            LOGGER.debug("Return uncensored list of {} observations to {}", filteredObservations.size(), (user.isSuperUser() ? "super" : "admin") + " user");
+            return sortObservationsByDateAndId(filteredObservations);
         }
         List<Observation> retVal = filteredObservations.stream().filter(obs -> obs.getBroadcastMessage() || (isPositive == null || !isPositive)).collect(Collectors.toList());
         //retVal.forEach(o->System.out.println(o.getObservationId()));
@@ -793,11 +793,13 @@ public class ObservationService {
         //retVal.forEach(o->System.out.println(o.getObservationId()));
         // If user is not logged in, return only the publicly available observations
         if (user == null) {
-            return retVal;
+            LOGGER.debug("Return {} masked public observations for unregistered user", retVal.size());
+            return sortObservationsByDateAndId(retVal);
         }
         // Else: This is a registered user without special privileges. Show public observations + user's own
         retVal.addAll(observationBean.getObservationsForUser(user));
-        return retVal;
+        LOGGER.debug("Return {} masked public observations and user's own observations for registered user {}", retVal.size(), user.getUserId());
+        return sortObservationsByDateAndId(retVal);
     }
 
     /**
@@ -907,7 +909,7 @@ public class ObservationService {
             String observationJson
     ) {
         LOGGER.info("In syncObservationFromApp");
-        LOGGER.info(observationJson);
+        LOGGER.debug(observationJson);
 
         try {
             VipsLogicUser user = userBean.getUserFromUUID(httpServletRequest);
@@ -1057,4 +1059,25 @@ public class ObservationService {
         }
 
     }
+
+
+    /**
+     * Sort observations by date in descending order, and by id in descending order if dates are identical
+     *
+     * @param observations The original list of unordered observations
+     * @return a sorted list of observations
+     */
+    private List<Observation> sortObservationsByDateAndId(List<Observation> observations) {
+        return observations.stream()
+                .sorted((o1, o2) -> {
+                    int timeCompare = o2.getTimeOfObservation().compareTo(o1.getTimeOfObservation());
+                    if (timeCompare != 0) {
+                        return timeCompare;
+                    } else {
+                        return Integer.compare(o2.getObservationId(), o1.getObservationId());
+                    }
+                })
+                .collect(Collectors.toList());
+    }
+
 }
diff --git a/src/test/java/no/nibio/vips/logic/service/ObservationTimeSeriesServiceTest.java b/src/test/java/no/nibio/vips/logic/service/ObservationTimeSeriesServiceTest.java
deleted file mode 100644
index 030e3261f192a5740979b4b4f3848aa90fe2635f..0000000000000000000000000000000000000000
--- a/src/test/java/no/nibio/vips/logic/service/ObservationTimeSeriesServiceTest.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package no.nibio.vips.logic.service;
-
-public class ObservationTimeSeriesServiceTest {
-
-}
\ No newline at end of file