diff --git a/src/vipscore_common/data_utils.py b/src/vipscore_common/data_utils.py
index 0d646a86fd7309906cb5d8a0babf50d60028b1fb..e0db4b86a933b77d5ef5fbfe1ba60a6f2f911b05 100644
--- a/src/vipscore_common/data_utils.py
+++ b/src/vipscore_common/data_utils.py
@@ -76,7 +76,7 @@ def get_result_list_from_dataframe(df: DataFrame):
             valid_time_start = timestamp,  # valid_time_start
             valid_time_end = None,
             warning_status = values.pop("WARNING_STATUS"),
-            all_values = values
+            all_values = json.dumps(values)
         ))
     return result_list 
     
diff --git a/src/vipscore_common/entities.py b/src/vipscore_common/entities.py
index 767546a0050c9843eee234a7c58fe68591429312..345d5e4a3f5dd75d6fcf0f9bd496b54eeff88345 100755
--- a/src/vipscore_common/entities.py
+++ b/src/vipscore_common/entities.py
@@ -24,10 +24,12 @@ along with VIPSCore-Python-Common.  If not, see <http://www.nibio.no/licenses/>.
 
 from datetime import datetime
 from shapely.geometry import Point, Polygon
-from pydantic import BaseModel,  validator, constr, Field
+from pydantic import BaseModel, validator, constr, Field
 from typing import Any, ClassVar, Optional
+import json
 import pytz
 
+
 class Result(BaseModel):
     """
     Represents a set of DSS model result values for a given point in space (Point, Polygon, MultiPolygon) and time (Period or immediate) 
@@ -36,12 +38,12 @@ class Result(BaseModel):
     valid_time_end: Optional[datetime] = Field(alias="validTimeEnd")
     valid_geometry: Optional[Any] = Field(alias="validGeometry")
     warning_status: int = Field(alias="warningStatus")
-    all_values: dict = Field(alias="allValues")
-
+    all_values: str = Field("{}", alias="allValues")
 
     class Config:
         allow_population_by_field_name = True
 
+
     WARNING_STATUS_NO_WARNING:              ClassVar[int] = 0
     WARNING_STATUS_NO_WARNING_MISSING_DATA: ClassVar[int] = 1
     WARNING_STATUS_NO_RISK:                 ClassVar[int] = 2
@@ -50,7 +52,7 @@ class Result(BaseModel):
     
 
     def get_keys(self):
-        return set(self.all_values.keys) if self.all_values is not None else set()
+        return set(json.loads(self.all_values.keys)) if self.all_values is not None else set()
 
     @validator("valid_time_start")
     def ensure_timezone(cls, v):
@@ -70,6 +72,19 @@ class Result(BaseModel):
     def ensure_geometry(cls,v):
         if v is not None and not isinstance(v, Point) and not isinstance(v, Polygon):
             raise ValueError("%s is not a " % v)
+    
+    def set_value(self, key, value):
+        temp_all_values = json.loads(self.all_values)
+        temp_all_values[key] = value
+        self.all_values = json.dumps(temp_all_values)
+    
+    def get_value(self, key):
+        temp_all_values = json.loads(self.all_values)
+        return temp_all_values.get(key)
+    
+    def set_all_values(self, values_dict):
+        self.all_values = json.dumps(values_dict)
+        
 
 class ModelConfiguration(BaseModel):
     """All the input data for the model."""
diff --git a/tests/test_entities.py b/tests/test_entities.py
index 35b47c7c38444ce01bf8a822dca209e0e07caa24..1272768c1be0578510f00491a548b5ed012be74d 100644
--- a/tests/test_entities.py
+++ b/tests/test_entities.py
@@ -1,6 +1,6 @@
 import unittest
 import datetime
-
+import json
 
 from src.vipscore_common.entities import *
 
@@ -11,5 +11,13 @@ class TestEntities(unittest.TestCase):
             valid_time_start = datetime.fromisoformat("2015-03-01T00:00:00+01:00"),  # valid_time_start
             valid_time_end = None,
             warning_status = 2,
-            all_values = {"TM":2}
-        )
\ No newline at end of file
+            all_values = json.dumps({"TM":2})
+        )
+
+        r = Result(
+            valid_time_start = datetime.fromisoformat("2015-03-01T00:00:00+01:00"),  # valid_time_start
+            valid_time_end = None,
+            warning_status = 2
+        )
+
+        r.set_value("TM",2)
\ No newline at end of file