diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ObservationTimeSeriesBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ObservationTimeSeriesBean.java
index cc178617f94fc1128fc82aebc4a4774269633246..be5bd46f578d71bc1a00fd800f840a2ff86281f8 100644
--- a/src/main/java/no/nibio/vips/logic/controller/session/ObservationTimeSeriesBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/ObservationTimeSeriesBean.java
@@ -45,49 +45,14 @@ public class ObservationTimeSeriesBean {
         List<ObservationTimeSeries> resultList = em.createNamedQuery("ObservationTimeSeries.findByUserId", ObservationTimeSeries.class)
                 .setParameter("userId", user.getUserId())
                 .getResultList();
-        this.enrichObservationTimeSeriesListWithGeoInfo(resultList);
         this.enrichObservationTimeSeriesListWithPointOfInterest(resultList);
         this.enrichObservationTimeSeriesListWithObservers(resultList);
         return resultList;
     }
 
-    private void enrichObservationTimeSeriesListWithGeoInfo(List<ObservationTimeSeries> otsList) {
-        if (otsList.isEmpty()) {
-            return;
-        }
-
-        // Indexing observations
-        Map<Integer, ObservationTimeSeries> obsBucket = new HashMap<>();
-        otsList.forEach((obs) -> {
-            obsBucket.put(obs.getObservationTimeSeriesId(), obs);
-        });
-
-        // Getting many-to-many relations
-        Query q = em.createNativeQuery("SELECT gis_id, observation_time_series_id FROM public.gis_observation_time_series WHERE observation_time_series_id IN :observationTimeSeriesIds");
-        q.setParameter("observationTimeSeriesIds", obsBucket.keySet());
-        List<Object[]> gisObservationTimeSeriesIds = q.getResultList();
-
-        // Collecting and indexing geoInfo
-        Query q2 = em.createNativeQuery("SELECT * FROM public.gis WHERE gis_id IN (SELECT gis_id FROM public.gis_observation_time_series WHERE observation_time_series_id IN :observationTimeSeriesIds)", Gis.class);
-        List<Gis> geoInfos = q2.setParameter("observationTimeSeriesIds", obsBucket.keySet()).getResultList();
-        Map<Integer, Gis> gisBucket = new HashMap<>();
-        geoInfos.forEach((geoInfo) -> {
-            gisBucket.put(geoInfo.getGisId(), geoInfo);
-        });
-
-        // Iterating the many-to-many relations,
-        // adding geoinfo to the correct observations
-        gisObservationTimeSeriesIds.forEach((gisOtsIds) -> {
-            Integer gisId = (Integer) gisOtsIds[0];
-            Integer observationId = (Integer) gisOtsIds[1];
-            obsBucket.get(observationId).addGeoInfo(gisBucket.get(gisId));
-        });
-    }
-
     public ObservationTimeSeries getObservationTimeSeries(Integer id) {
         ObservationTimeSeries ots = em.find(ObservationTimeSeries.class, id);
         if (ots != null) {
-            ots.setGeoInfoList(this.getGeoInfoForObservationTimeSeries(ots));
             ots.setUser(em.find(VipsLogicUser.class, ots.getUserId()));
             if (ots.getLastModifiedBy() != null) {
                 ots.setLastModifiedByUser(em.find(VipsLogicUser.class, ots.getLastModifiedBy()));
@@ -96,48 +61,12 @@ public class ObservationTimeSeriesBean {
         return ots;
     }
 
-    public List<Gis> getGeoInfoForObservationTimeSeries(ObservationTimeSeries ots) {
-        List<Integer> gisIds = em.createNativeQuery("SELECT gis_id FROM public.gis_observation_time_series WHERE observation_time_series_id = :observationTimeSeriesId")
-                .setParameter("observationTimeSeriesId", ots.getObservationTimeSeriesId())
-                .getResultList();
-
-        if (gisIds != null && !gisIds.isEmpty()) {
-            return em.createNamedQuery("Gis.findByGisIds", Gis.class)
-                    .setParameter("gisIds", gisIds)
-                    .getResultList();
-        } else {
-            return new ArrayList<>();
-        }
-    }
-
     /**
      * @param ots the observation time series
      * @return The merged object
      */
     public ObservationTimeSeries storeObservationTimeSeries(ObservationTimeSeries ots) {
-        ObservationTimeSeries mergedOts = em.merge(ots);
-        em.createNativeQuery("DELETE FROM public.gis_observation_time_series WHERE observation_time_series_id=:observationTimeSeriesId")
-                .setParameter("observationTimeSeriesId", mergedOts.getObservationTimeSeriesId())
-                .executeUpdate();
-        em.createNativeQuery("DELETE FROM public.gis where gis_id IN (SELECT gis_id FROM public.gis_observation_time_series WHERE observation_time_series_id=:observationTimeSeriesId)")
-                .setParameter("observationTimeSeriesId", mergedOts.getObservationTimeSeriesId())
-                .executeUpdate();
-        // Then persist the new ones
-        if (ots.getGeoInfoList() != null && !ots.getGeoInfoList().isEmpty()) {
-            ots.getGeoInfoList().forEach((gis) -> {
-                em.persist(gis);
-            });
-            // Prepare query for inserting gis_observation_time_series
-            Query q = em.createNativeQuery("INSERT INTO public.gis_observation_time_series(gis_id,observation_time_series_id) VALUES(:gisId,:observationTimeSeriesId)")
-                    .setParameter("observationTimeSeriesId", mergedOts.getObservationTimeSeriesId());
-            // Add gis_id and execute query
-            ots.getGeoInfoList().forEach((gis) -> {
-                q.setParameter("gisId", gis.getGisId()).executeUpdate();
-            });
-        }
-        // The GisObservations are not included in the merged object, so we should add them
-        mergedOts.setGeoInfoList(this.getGeoInfoForObservationTimeSeries(mergedOts));
-        return mergedOts;
+        return em.merge(ots);
     }
 
     public void deleteObservationTimeSeries(Integer id) {
diff --git a/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java b/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
index 5bcef8922ed5ca47ec590b9de3b4c6787c6dea13..3753e25ee8b99ec7b09999a453dea6b3b70a1382 100644
--- a/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
+++ b/src/main/java/no/nibio/vips/logic/entity/ObservationTimeSeries.java
@@ -57,20 +57,10 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
     private VipsLogicUser lastModifiedByUser; // Transient
     private Integer locationPointOfInterestId;
     private PointOfInterest locationPointOfInterest;
-    private List<Gis> geoInfoList;
     private Boolean locationIsPrivate;
     private PolygonService polygonService;
 
-    private GISEntityUtil GISEntityUtil;
-    private GISUtil GISUtil;
-
     public ObservationTimeSeries() {
-        this.GISEntityUtil = new GISEntityUtil();
-        this.GISUtil = new GISUtil();
-    }
-
-    public ObservationTimeSeries(Integer observationTimeSeriesId) {
-        this.observationTimeSeriesId = observationTimeSeriesId;
     }
 
     /**
@@ -307,35 +297,6 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
         this.locationPointOfInterest = locationPointOfInterest;
     }
 
-    public void addGeoInfo(Gis geoInfo) {
-        if (this.geoInfoList == null) {
-            this.geoInfoList = new ArrayList<>();
-        }
-        this.geoInfoList.add(geoInfo);
-    }
-
-    @JsonIgnore
-    @Transient
-    public List<Gis> getGeoInfoList() {
-        return this.geoInfoList;
-    }
-
-    public void setGeoInfoList(List<Gis> geoInfoList) {
-        this.geoInfoList = geoInfoList;
-    }
-
-    public void setGeoInfoList(String json) {
-        this.setGeoInfoList(this.GISEntityUtil.getGisFromGeoJSON(json));
-    }
-
-    @Transient
-    @Override
-    public String getGeoInfo() {
-        Map<String, Object> properties = new HashMap<>();
-        properties.put("observationTimeSeriesId", this.getObservationTimeSeriesId());
-        return this.GISEntityUtil.getGeoJSONFromGis(this.geoInfoList, properties);
-    }
-
     /**
      * @return the locationIsPrivate
      */
@@ -399,11 +360,8 @@ public class ObservationTimeSeries implements Serializable, no.nibio.vips.observ
                 ", lastModifiedByUser=" + lastModifiedByUser +
                 ", locationPointOfInterestId=" + locationPointOfInterestId +
                 ", locationPointOfInterest=" + locationPointOfInterest +
-                ", geoInfoList=" + geoInfoList +
                 ", locationIsPrivate=" + locationIsPrivate +
                 ", polygonService=" + polygonService +
-                ", GISEntityUtil=" + GISEntityUtil +
-                ", GISUtil=" + GISUtil +
                 '}';
     }
 
diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
index e0c5d0a0b25b97756abaa9a457cb6b2adb896bbc..3c250d0889643152650d36d32b25f3bbe71a873e 100644
--- a/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationTimeSeriesService.java
@@ -13,7 +13,6 @@ import no.nibio.vips.logic.entity.VipsLogicUser;
 import no.nibio.vips.logic.entity.rest.PointMappingResponse;
 import no.nibio.vips.logic.entity.rest.ReferencedPoint;
 import no.nibio.vips.logic.util.GISEntityUtil;
-import no.nibio.vips.logic.util.SystemTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.wololo.geojson.Feature;
@@ -36,7 +35,6 @@ import java.util.stream.Collectors;
 public class ObservationTimeSeriesService {
 
     public static final String APPLICATION_JSON = "application/json;charset=UTF-8";
-    public static final String GEO_INFO = "geoInfo";
     private final static Logger LOGGER = LoggerFactory.getLogger(ObservationTimeSeriesService.class);
     private static final String DELETED = "deleted";
     private static final String OBSERVATION_TIME_SERIES_ID = "observationTimeSeriesId";
@@ -101,13 +99,10 @@ public class ObservationTimeSeriesService {
     @Produces(APPLICATION_JSON)
     @TypeHint(ObservationTimeSeries.class)
     public Response getObservationTimeSeries(@PathParam("observationTimeSeriesId") Integer observationTimeSeriesId, @QueryParam("userUUID") String userUUID) {
-        // Observation needs to be masked here as well, or does it create trouble for VIPSLogic observation admin?
         ObservationTimeSeries ots = observationTimeSeriesBean.getObservationTimeSeries(observationTimeSeriesId);
         if (ots == null) {
             return Response.status(Response.Status.NOT_FOUND).build();
         }
-        VipsLogicUser creator = userBean.getVipsLogicUser(ots.getUserId());
-
         VipsLogicUser requester = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user");
         if (requester == null && userUUID != null) {
             requester = userBean.findVipsLogicUser(UUID.fromString(userUUID));
@@ -118,12 +113,8 @@ public class ObservationTimeSeriesService {
         boolean requesterNotCreator = requester != null && !ots.getUserId().equals(requester.getUserId());
 
         if (requesterNotValidUser || requesterRegularUser) {
-            // Hide completely for all users except creator, super and orgadmin
-            if (ots.getLocationIsPrivate() && (requesterNotValidUser || requesterNotCreator)) {
-                ots.setGeoInfoList(new ArrayList<>());
-            }
             // Mask for all users except creator, super and orgadmin
-            else if (ots.getPolygonService() != null) {
+            if (!(ots.getLocationIsPrivate() && (requesterNotValidUser || requesterNotCreator)) && ots.getPolygonService() != null) {
                 observationTimeSeriesBean.enrichObservationTimeSeriesWithPointOfInterest(ots);
                 this.maskLocation(ots.getPolygonService(), ots);
             }
@@ -132,8 +123,7 @@ public class ObservationTimeSeriesService {
     }
 
     /**
-     * The location (point of interest) of the given observation time series is masked using
-     * the provided polygon service.
+     * The location (point of interest) of the given observation time series is masked using the provided polygon service.
      *
      * @param polygonService        The polygon service that should be used for masking
      * @param observationTimeSeries The observation time series to mask location for
@@ -162,7 +152,6 @@ public class ObservationTimeSeriesService {
                 Gis polygon = gisEntityUtil.getGisFromFeature(indexedPolygons.get(borderId));
                 List<Gis> gis = new ArrayList<>();
                 gis.add(polygon);
-                observationTimeSeries.setGeoInfoList(gis);
                 observationTimeSeries.setLocationPointOfInterest(null);
                 observationTimeSeries.setLocationPointOfInterestId(null);
             }
@@ -183,13 +172,15 @@ public class ObservationTimeSeriesService {
     @TypeHint(ObservationTimeSeries.class)
     public Response syncObservationTimeSeriesFromApp(String jsonOts) {
         LOGGER.info("In syncObservationTimeSeriesFromApp");
+        LOGGER.info(jsonOts);
         VipsLogicUser user = userBean.getUserFromUUID(httpServletRequest);
         if (user == null) {
             return Response.status(Response.Status.UNAUTHORIZED).build();
         }
         ObjectMapper oM = new ObjectMapper();
         try {
-            Map<Object, Object> mapFromApp = oM.readValue(jsonOts, new TypeReference<HashMap<Object, Object>>() {});
+            Map<Object, Object> mapFromApp = oM.readValue(jsonOts, new TypeReference<HashMap<Object, Object>>() {
+            });
 
             Integer otsId = (Integer) mapFromApp.get(OBSERVATION_TIME_SERIES_ID);
 
@@ -222,7 +213,6 @@ public class ObservationTimeSeriesService {
             }
             otsToSave.setCropOrganism(organismBean.getOrganism(getValueFromMap(mapFromApp, CROP_ORGANISM_ID, Integer.class)));
             otsToSave.setOrganism(organismBean.getOrganism(getValueFromMap(mapFromApp, ORGANISM_ID, Integer.class)));
-            otsToSave.setGeoInfoList(getValueFromMap(mapFromApp, GEO_INFO, String.class));
             otsToSave.setLocationPointOfInterestId(getValueFromMap(mapFromApp, LOCATION_POINT_OF_INTEREST_ID, Integer.class));
             otsToSave.setYear(getValueFromMap(mapFromApp, YEAR, Integer.class));
             otsToSave.setName(getValueFromMap(mapFromApp, NAME, String.class));
@@ -239,10 +229,11 @@ public class ObservationTimeSeriesService {
             otsToSave.setLastModifiedBy(user.getUserId());
 
             // Input check before storing, location must be set
-            if ((otsToSave.getGeoInfo() == null || otsToSave.getGeoInfo().trim().isEmpty()) && otsToSave.getLocationPointOfInterestId() == null) {
+            if (otsToSave.getLocationPointOfInterestId() == null) {
                 LOGGER.error("The observation time series is missing location data");
                 return Response.status(Response.Status.BAD_REQUEST).entity("The observation time series is missing location data").build();
             }
+            LOGGER.info("otsToSave before storing: " + otsToSave);
             otsToSave = observationTimeSeriesBean.storeObservationTimeSeries(otsToSave);
             return Response.ok().entity(otsToSave).build();
         } catch (IOException e) {