diff --git a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
index a9bf20bd46ed7937141b55920256cc261e78ef4d..a92f370e5e80a948f855e30dd7a0dfb4d225c597 100755
--- a/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
+++ b/src/main/java/no/nibio/vips/logic/controller/session/ObservationBean.java
@@ -780,7 +780,7 @@ public class ObservationBean {
      * @param httpServletRequest
      * @return 
      */
-    public ObservationDataSchema getObservationDataSchema(Integer organizationId, Integer organismId, HttpServletRequest httpServletRequest)
+    public ObservationDataSchema getObservationDataSchema(Integer organizationId, Integer organismId)
     {
         try
         {
@@ -798,6 +798,43 @@ public class ObservationBean {
         }
     }
     
+    /**
+     * If there exist title translations for this schema, it
+     * @param schema
+     * @param httpServletRequest
+     * @return 
+     */
+    public ObservationDataSchema getLocalizedObservationDataSchema(ObservationDataSchema ods, HttpServletRequest httpServletRequest) throws IOException
+    {
+        ResourceBundle bundle = SessionLocaleUtil.getI18nBundle(httpServletRequest);
+            
+            // We iterate the schema, replacing default field labels with
+            // translated ones
+            // First: Convert to Jackson JsonNode tree
+            ObjectMapper m = new ObjectMapper();
+            JsonNode rootNode = m.readTree(ods.getDataSchema());
+            Iterator<Entry<String, JsonNode>> nodeIterator = rootNode.fields();
+            
+            String fieldKeyPrefix = "observationDataField_";
+            // Loop through each field
+            while (nodeIterator.hasNext()) {
+                Map.Entry<String, JsonNode> schemaPropertyField = (Map.Entry<String, JsonNode>) nodeIterator.next();
+                // Get the property field key (e.g. "counting2")
+                String fieldKey = schemaPropertyField.getKey();
+                // Find a translation. 
+                if(bundle.containsKey(fieldKeyPrefix + fieldKey))
+                {
+                    // If found, replace with translation
+                    // Get the property field (e.g. {"title":"Counting 2"} )
+                    JsonNode schemaProperty = schemaPropertyField.getValue();
+                    ((ObjectNode)schemaProperty).put("title", bundle.getString(fieldKeyPrefix + fieldKey));
+                    ((ObjectNode)rootNode).replace(fieldKey, schemaProperty);
+                }
+            }
+            ods.setDataSchema(m.writeValueAsString(rootNode));
+            return ods;
+    }
+    
     /**
      * 
      * @param organizationId
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 e8f504e4ca5921de6974c92358329ef129767d6f..42cb7c3fbccdf9c66e1e05583b62b31de1fcf2d4 100755
--- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java
+++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java
@@ -366,7 +366,7 @@ public class ObservationService {
         }
         // Which organization does this observation belong to?
         VipsLogicUser observer = SessionControllerGetter.getUserBean().getVipsLogicUser(o.getUserId());
-        o.setObservationDataSchema(SessionControllerGetter.getObservationBean().getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId(), httpServletRequest));
+        o.setObservationDataSchema(SessionControllerGetter.getObservationBean().getObservationDataSchema(observer.getOrganizationId().getOrganizationId(), o.getOrganismId()));
       
         VipsLogicUser user = (VipsLogicUser) httpServletRequest.getSession().getAttribute("user");
         if(user == null && userUUID != null)
diff --git a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java
index 37e72c293862242a343ec2c9b99fbbbcf92d62c5..04e3a2c2838c9c968287f88f0cd1554033d2afdf 100755
--- a/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java
+++ b/src/main/java/no/nibio/vips/observationdata/ObservationDataService.java
@@ -39,6 +39,7 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
 import no.nibio.vips.logic.i18n.SessionLocaleUtil;
+import no.nibio.vips.logic.util.SessionControllerGetter;
 
 /**
  * @copyright 2016 <a href="http://www.nibio.no/">NIBIO</a>
@@ -65,15 +66,12 @@ public class ObservationDataService {
     @Path("schema/{organizationId}/{organismId}")
     @Produces("application/json;charset=UTF-8")
     public Response getSchema(@PathParam("organizationId") Integer organizationId,@PathParam("organismId") Integer organismId){
-        // Try to find schema for given organism/organization
-        ObservationDataSchema ods = null;
+        
         try
         {
-            ods = em.createNamedQuery("ObservationDataSchema.findByPK", ObservationDataSchema.class)
-                .setParameter("organizationId", organizationId)
-                .setParameter("organismId", organismId)
-                .getSingleResult();
-            
+            // Try to find schema for given organism/organization
+            ObservationDataSchema ods = SessionControllerGetter.getObservationBean().getObservationDataSchema(organizationId, organismId);
+            /*
             ResourceBundle bundle = SessionLocaleUtil.getI18nBundle(httpServletRequest);
             
             // We iterate the schema, replacing default field labels with
@@ -100,11 +98,16 @@ public class ObservationDataService {
                 }
             }
             return Response.ok().entity(rootNode).build();
+            */
+            ods = SessionControllerGetter.getObservationBean().getLocalizedObservationDataSchema(ods, httpServletRequest);
+            return Response.ok().entity(ods.getDataSchema()).build();
             
-        }catch(IOException | NoResultException ex){}
-        
-        // If not found, return standard nominator/denominator (unit) form 
-        return Response.ok().entity(ods != null ? ods.getDataSchema() : this.getStandardSchema()).build();
+        }
+        catch(IOException ex)
+        {
+            return Response.serverError().entity(ex).build();
+        }
+
     }
     
     @GET